gzip Java TarInputStream读取tar的文件名。包含另一个tar的gz文件。gz文件
我正在尝试获取tar的文件名。另一个tar中的gz文件。gz文件。下面是示例代码
try (TarInputStream tis = getStreamRemoteTarGz(url)) { // accessing the first tar.gz file
TarEntry e;
while ((e = tis.getNextEntry()) != null) {
if (e.getName().endsWith(".tar.gz")) {
// accessing the inner tar.gz file (java.io.FileNotFoundException: inner_tar_file.tar.gz (No such file or directory))
try (TarInputStream innerTis = new TarInputStream(new GZIPInputStream(new FileInputStream(entry.getName())))) {
....
}
}
结果,我得到了FileNotFoundException:internal\u tar\u文件。焦油广州。文件名(internal_tar_file.tar.gz)是正确的,我可以访问internal tar的名称。gz文件,但我想访问此tar中包含的文件名。gz文件。如何访问内部tar的文件名。gz文件使用TarInputStream
# 1 楼答案
tar文件的内容本身不是一个文件。至少不是在
java.io.File
的意义上,它直接在文件系统上表示一个真实的物理文件(eem>)java.io.File
表示任何可以通过C:\somePath\myFile.ext
(在Windows上)或/home/user/somepath/myFile.ext
(在大多数其他操作系统上)这样的路径进行寻址的内容。没有这样的路径可以直接指向操作系统能够理解的.tar.gz
中的条目只需传入名为
tis
的TarInputStream
,而不是创建新的FileInputStream