我有一个 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());
我知道我们可以先将此文件保存在目录中,然后再读取文件,但我不想将此文件保存在目录中。
有什么方法可以在不将文件保存到某个目录的情况下读取此文件?