有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    tar文件的内容本身不是一个文件。至少不是在java.io.File的意义上,它直接在文件系统上表示一个真实的物理文件(eem>)

    java.io.File表示任何可以通过C:\somePath\myFile.ext(在Windows上)或/home/user/somepath/myFile.ext(在大多数其他操作系统上)这样的路径进行寻址的内容。没有这样的路径可以直接指向操作系统能够理解的.tar.gz中的条目

    只需传入名为tisTarInputStream,而不是创建新的FileInputStream