0
Ich muss ein Tear-Archiv zu einem anderen zu packen. Ich weiß, dass ArchieveEntry bereits ein Stream ist, also schreibe ich einfach von einem Stream zum anderen. Hier ist mein Code:Apache Commons Compress Schreiben von einem Stream zu einem anderen aufhängen
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();
}
Es zeigen keine Fehler, es ist einfach auflegen. Was kann ein Broblem sein? Danke im Voraus!
vielleicht '> verwenden 0 'statt'! = -1' – F43nd1r
@ F43nd1r danke, aber nein, Ströme beginnen immer mit 0, nicht 1, also ist Null gleich -1, nicht 0. Gleiches gilt für Arrays. – Acuna
Lösen Sie das Problem, indem Sie die Schleife mit 'IOUtils.copy (tarIn, tarOut);' – Acuna