【问题标题】:Cant extract single files from Tar, 0kb size, Java无法从 Tar,0kb 大小,Java 中提取单个文件
【发布时间】:2015-10-30 15:18:57
【问题描述】:

我已经创建了一个应用程序,它将从 tar-archive 中提取单个文件。应用程序正确读取 *.tar,但是当我尝试提取文件时,应用程序只是创建具有正确文件名的新文件...文件为空 (0kb)。所以...我可能只是创建新文件而不是提取...

在这一点上我完全是一个初学者......

for(TarArchiveEntry tae : tarEntries){
    System.out.println(tarEntries.size());
    try {
        fOutput = new FileOutputStream(new File(tae.getFile(), tae.getName()));
        byte[] buf = new byte[(int) tae.getSize()];
        int len;

        while ((len = tarFile.read(buf)) > 0) {
            fOutput.write(buf, 0, len);
        }

        fOutput.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

【问题讨论】:

  • tarFile 是如何定义的,里面有什么?不应该引用 tae 而不是 tarFile.read(buf) 吗?

标签: java tar apache-commons-compress


【解决方案1】:

假设tarFileTarArchiveInputStream,您只能在调用tarFile.getNextTarEntry() 后立即读取条目的内容。

流是按顺序处理的,因此当您调用getNextTarEntry 时,您会跳过当前条目的内容,直接跳到下一个条目。看起来您已经阅读了整个存档以填充 tarEntries,在这种情况下,您已经阅读了最后一个条目并且流已用尽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多