Почему NoPointerExcepeion при распаковке с помощью apache компрессии?
нажмите и увидите NoPointerExcepeion
Я генерирую файлы tar.gz и отправляю 2 других 4 распаковываемых файла, но их прогрем имеет ошибку выше (их прогрем не был создан мной), только один файл имеет эту ошибку.
Но при использовании команды "tar -xzvf ***" на моем компьютере и их компьютере проблем не возникало...
Итак, я хочу знать, что не так в моем прогрем ниже:
public static void archive(ArrayList<File> files, File destFile) throws Exception {
TarArchiveOutputStream taos = new TarArchiveOutputStream(new FileOutputStream(destFile));
taos.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX);
for (File file : files) {
//LOG.info("file Name: "+file.getName());
archiveFile(file, taos, "");
}
}
private static void archiveFile(File file, TarArchiveOutputStream taos, String dir) throws Exception {
TarArchiveEntry entry = new TarArchiveEntry(dir + file.getName());
entry.setSize(file.length());
taos.putArchiveEntry(entry);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
int count;
byte data[] = new byte[BUFFER];
while ((count = bis.read(data, 0, BUFFER)) != -1) {
taos.write(data, 0, count);
}
bis.close();
taos.closeArchiveEntry();
}
1 ответ
Решение
Трассировка стека выглядит как ошибка в Apache Commons Compress https://issues.apache.org/jira/browse/COMPRESS-223, которая была исправлена в версии 1.7 (выпущенной почти три года назад).