我试图在另一个 tar.gz 文件中获取 tar.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:inner_tar_file.tar.gz。文件名 (inner_tar_file.tar.gz) 是正确的,我可以访问内部 tar.gz 文件的名称,但我想访问此 tar.gz 文件中包含的文件名。如何使用 TarInputStream 访问内部 tar.gz 文件的文件名?
tar 文件的内容本身并不是一个文件。至少在 的意义上不是java.io.File
,它直接代表文件系统上的真实物理文件)。
java.io.File
代表任何可以使用路径C:\somePath\myFile.ext
(在 Windows 上)或/home/user/somepath/myFile.ext
(在大多数其他操作系统上)进行寻址的内容。没有这样的路径直接指向操作系统可以理解的a.tar.gz
中的条目。
而不是创建一个新的FileInputStream
简单传递TarInputStream
命名的tis
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句