Не могу извлечь отдельные файлы из 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 в этом случае вы уже прочитали последнюю запись, и поток исчерпан.

Другие вопросы по тегам