当前位置: 首页 > 知识库问答 >
问题:

无法从Tar、0kb大小、Java中提取单个文件

楚举
2023-03-14

我已经创建了一个应用程序,它将从tar存档中提取单个文件。该应用程序正确读取*.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();
    }
}

共有1个答案

索嘉石
2023-03-14

假设< code>tarFile是< code > TarArchiveInputStream ,则只能在调用< code > tarFile . getnexttarentry()后读取条目的内容。

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

 类似资料:
  • 我需要从大文件中提取文本(最大限制50MB)文件可能是doc、ppt、xls、txt或pdf格式。到目前为止,我使用了ApachePOI'http://poi.apache.org/' 用于Microsoft Office文档和PDFBox从PDF中提取文本。然而,随着文件变大,提取过程变得缓慢,特别是以下文件。到目前为止我取得的成果: 1. PPTX-45MB-3分钟apx 2.PDF-62MB

  • 我必须提取两个值(最小

  • 我写了一个剧本,下载tar文件 " msg ":"找不到\"/Users/harmeet/的处理程序。ansi ble/tmp/ansi ble-tmp-1549339698.75-251687957122076/config . tar 9 ixauq . gz \ "。确保安装了提取文件所需的命令。命令\"/usr/bin/tar\ "被检测为tar类型bsd。需要GNU tar。命令\"/u

  • 我有一个.tar文件,其中包含文件夹中的许多.gz文件。这些 gz 文件中的每一个都包含一个.txt文件。与此问题相关的其他堆栈溢出问题旨在提取文件。 我试图反复阅读每一个的内容。txt文件,因为。焦油很大。 首先我阅读了. tar文件的内容: 或在Unix中: 然后我尝试使用tarfile提取文件方法,但我得到一个错误:“模块'tarfile'没有属性'提取文件'”。此外,我甚至不确定这是正确的

  • 问题内容: 假设您有一个像这样的文本文件:http : //www.gutenberg.org/files/17921/17921-8.txt 有没有人有一个好的算法或开放源代码从文本文件中提取单词?如何获得所有单词,同时避免使用特殊字符,并保留诸如“ it’s”之类的内容… 我在用Java工作。谢谢 问题答案: 这听起来像是正则表达式的正确工作。如果您不知道如何开始,以下是一些Java代码,可以

  • 我是新的MongoDB,并试图从数据库检索单个文档的大小。 数据库名为“”集合名为“” 我试过: 我也尝试过: 但它只返回。如何获取文档的大小?非常感谢。