Не могу извлечь отдельные файлы из Tar, размером 0 КБ, Java
У меня было создано приложение, которое будет извлекать отдельные файлы из tar-архива. Приложение правильно читает *.tar, но когда я пытаюсь извлечь файлы, приложение просто создает новые файлы с правильным именем файла... Файлы пустые (0 КБ). Итак... я, вероятно, просто создаю новые файлы вместо извлечения...
Я полностью новичок в этой точке...
for(TarArchiveEntry tae : tarEntries){
System.out.println(tarEntries.size());
try {
fOutput = new FileOutputStream(new File(tae.getFile(), tae.getName()));
byte[] buf = new byte[(int) tae.getSize()];
int len;
while ((len = tarFile.read(buf)) > 0) {
fOutput.write(buf, 0, len);
}
fOutput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
1 ответ
Если предположить, tarFile
это TarArchiveInputStream
Вы можете только прочитать содержание записи сразу после звонка tarFile.getNextTarEntry()
,
Поток обрабатывается последовательно, поэтому при вызове getNextTarEntry
Вы пропускаете содержание текущей записи прямо к следующей записи. Похоже, что вы прочитали весь архив, чтобы заполнить tarEntries
в этом случае вы уже прочитали последнюю запись, и поток исчерпан.