fredericmazue wrote:Je ne comprends rien au délire que tu as cité. Pour faire ce que tu veux, il suffit de créer un FileOutputStream en donnant le nom de fichier zip à créer, puis de créer un ZipOutputStream en donnant le FileOutputStream précedemment créé au constructeur du ZipOutputStream. C'est tout ce qu'il y a à faire.
Bonjour,
Voici le code utilisé:
try {
// création d'un flux d'écriture sur fichier
FileOutputStream dest = new FileOutputStream( zipFileName+ ".zip");
// calcul du checksum : Adler32 (plus rapide) ou CRC32
CheckedOutputStream checksum = new CheckedOutputStream(dest, new Adler32());
// création d'un buffer d'écriture
BufferedOutputStream buff = new BufferedOutputStream(checksum);
// création d'un flux d'écriture Zip
ZipOutputStream out = new ZipOutputStream(buff);
// spécification de la méthode de compression
out.setMethod(ZipOutputStream.DEFLATED);
// spécifier la qualité de la compression 0..9
out.setLevel(Deflater.BEST_COMPRESSION);
// buffer temporaire des données ‡ écriture dans le flux de sortie
byte data[] = new byte[BUFFER];
// création d'un flux de lecture
FileInputStream fi = new FileInputStream(source);
// création d'un tampon de lecture sur ce flux
BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
// création d'en entrée Zip pour ce fichier
ZipEntry entry = new ZipEntry(unAccent(source));
// ajout de cette entrée dans le flux d'écriture de l'archive Zip
out.putNextEntry(entry);
// écriture du fichier par paquet de BUFFER octets
// dans le flux d'écriture
int count;
while((count = buffi.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
// Close the current entry
out.closeEntry();
// fermeture du flux de lecture
buffi.close();
// fermeture du flux d'écriture
out.close();
buff.close();
checksum.close();
dest.close();
retour = 15;
// traitement de toute exception
} catch(Exception e) {
e.printStackTrace();
test.log_erreur( e.getMessage(), this );
return "pb"+retour;
}
return "0";
}
Le recepteur du fichier me dit que ce dernier n'est pas dans le bon format (bytes et non caractère) :!:
Bonjour,
Voici le code utilisé:
try { // création d'un flux d'écriture sur fichier FileOutputStream dest = new FileOutputStream( zipFileName+ ".zip"); // calcul du checksum : Adler32 (plus rapide) ou CRC32 CheckedOutputStream checksum = new CheckedOutputStream(dest, new Adler32()); // création d'un buffer d'écriture BufferedOutputStream buff = new BufferedOutputStream(checksum); // création d'un flux d'écriture Zip ZipOutputStream out = new ZipOutputStream(buff); // spécification de la méthode de compression out.setMethod(ZipOutputStream.DEFLATED); // spécifier la qualité de la compression 0..9 out.setLevel(Deflater.BEST_COMPRESSION); // buffer temporaire des données ‡ écriture dans le flux de sortie byte data[] = new byte[BUFFER]; // création d'un flux de lecture FileInputStream fi = new FileInputStream(source); // création d'un tampon de lecture sur ce flux BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER); // création d'en entrée Zip pour ce fichier ZipEntry entry = new ZipEntry(unAccent(source)); // ajout de cette entrée dans le flux d'écriture de l'archive Zip out.putNextEntry(entry); // écriture du fichier par paquet de BUFFER octets // dans le flux d'écriture int count; while((count = buffi.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } // Close the current entry out.closeEntry(); // fermeture du flux de lecture buffi.close(); // fermeture du flux d'écriture out.close(); buff.close(); checksum.close(); dest.close(); retour = 15; // traitement de toute exception } catch(Exception e) { e.printStackTrace(); test.log_erreur( e.getMessage(), this ); return "pb"+retour; } return "0"; }Le recepteur du fichier me dit que ce dernier n'est pas dans le bon format (bytes et non caractère) :!: