【发布时间】:2021-03-01 05:13:27
【问题描述】:
我有一个 tar 文件,其中包含许多文件。我需要从 tar 文件中获取特定文件并从该文件中读取数据。
我正在使用下面的代码解压文件,我将使用其他函数读取这个返回的输入流。
private InputStream unTar(final File inputFile, final File outputDir) throws FileNotFoundException, IOException, ArchiveException {
InputStream versionInputStream = null;
final InputStream is = new FileInputStream(inputFile);
final TarArchiveInputStream debInputStream = (TarArchiveInputStream) new ArchiveStreamFactory().createArchiveInputStream("tar", is);
TarArchiveEntry entry = null;
while ((entry = (TarArchiveEntry)debInputStream.getNextEntry()) != null) {
if (!entry.isDirectory() && entry.getName().equals("version.txt")) {
versionInputStream = new FileInputStream(entry.getFile());
}
}
return versionInputStream;
}
versionInputStream = new FileInputStream(entry.getFile()); 时出现空指针异常
我知道我们可以先将这个文件保存在目录中,然后再读取文件,但我不想把这个文件保存在目录中。
有没有什么方法可以在不将文件保存到某个目录的情况下读取此文件?
【问题讨论】:
标签: java inputstream tar apache-commons-compress