2015-10-30 2 views
0

Я создал приложение, которое извлекает отдельные файлы из tar-архива. Приложение правильно читает * .tar, но когда я пытаюсь извлечь файлы, приложение просто создает новые файлы с правильным именем файла ... Файлы пустые (0kb). Так что ... Я, наверное, просто создать новые файлы вместо экстракта ...Cant извлекает отдельные файлы из Tar, 0kb size, Java

Я совершенно новичок в этой точке ...

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(); 
    } 
} 
+0

Как определяется tarFile и что там? Не следует ли ссылаться на tae вместо tarFile.read (buf)? – yasd

ответ

1

Предполагая tarFile является TarArchiveInputStream вы можете прочитать только запись-х содержимое сразу после звонка tarFile.getNextTarEntry().

Поток обрабатывается последовательно, поэтому при вызове getNextTarEntry вы пропускаете содержимое текущей записи прямо к следующей записи. Кажется, что вы прочитали весь архив, чтобы заполнить tarEntries, и в этом случае вы уже прочитали последнюю запись, и поток исчерпан.

Смежные вопросы