0
J'ai besoin de reconditionner une archive tar à l'autre. Je sais que ArchieveEntry est déjà un flux, alors je suis simplement en train d'écrire d'un flux à l'autre. Voici mon code:Apache Commons Compresser écrire d'un flux à un autre raccrocher
public void repack (String sourceFile, String destFile) throws IOException {
TarArchiveInputStream tarIn = new TarArchiveInputStream (new BufferedInputStream (new FileInputStream (sourceFile)));
TarArchiveOutputStream tarOut = new TarArchiveOutputStream (new FileOutputStream (destFile));
TarArchiveEntry tarEntry;
while ((tarEntry = tarIn.getNextTarEntry()) != null) {
tarOut.putArchiveEntry (tarEntry);
if (tarEntry.isFile()) {
int counter;
byte byteData[] = new byte[(int) tarEntry.getSize()];
while ((counter = tarIn.read (byteData, 0, byteData.length)) != -1)
tarOut.write (byteData, 0, counter);
}
tarOut.closeArchiveEntry();
}
tarIn.close();
tarOut.flush();
tarOut.close();
}
Il ne montre aucune erreur, il est simplement raccrocher. Qu'est-ce qui peut être un problème? Merci d'avance!
peut-être utiliser '> 0' au lieu de'! = -1' – F43nd1r
@ F43nd1r merci, mais non, les flux commençant toujours par 0, et non par 1, donc zéro est -1, pas 0. Idem avec les tableaux. – Acuna
Résolvez le problème en modifiant la boucle avec 'IOUtils.copy (tarIn, tarOut);' – Acuna