`

java从tar.gz中抽取某个文件

 
阅读更多

File tarGzFile = new File(archiveFileName + ".tar.gz");
    FileInputStream tarGzFileIs = null;
    CompressorInputStream cis = null;
    TarArchiveInputStream tis = null;
    BufferedReader br = null;
    try {
      tarGzFileIs = new FileInputStream(tarGzFile);
      cis = new GzipCompressorInputStream(tarGzFileIs, true);
      tis = new TarArchiveInputStream(cis);
      TarArchiveEntry entry = tis.getNextTarEntry();
      StringBuffer ret = null;

      while (entry != null) {
        if (entry.getName().contains(_snapshotID)) {
          br = new BufferedReader(new InputStreamReader(tis, "UTF8"));
          
          // Read the snapshot file line by line
          String line = br.readLine();
          while (line != null) {
              // add the line to the snapshot
              if(ret == null) {
                  ret = new StringBuffer(line);
              } else {
                  ret.append("\n").append(line);
              }
              // Read next line.
              line = br.readLine();
          } // end of loop reading the lines
          
          if (ret != null) {
            snapshot = ret.toString();
          }
          break;
        }
        entry = tis.getNextTarEntry();
      }
    } catch (FileNotFoundException e) {
      throw new PnSnapshotRepositoryConnectorException(
          PnSnapshotRepositoryConnectorException.SN_NOT_IN_REPOSITORY);
    } catch (IOException e) {
      throw new PnSnapshotRepositoryConnectorException(
          PnSnapshotRepositoryConnectorException.SN_NOT_IN_REPOSITORY);
    } finally {
      if (br != null) {
        try {
          br.close();
        } catch (IOException e) {
        }
      }
      if (tis != null) {
        try {
          tis.close();
        } catch (IOException e) {
        }
      }
      if (cis != null) {
        try {
          cis.close();
        } catch (IOException e) {
        }
      }
      if (tarGzFileIs != null) {
        try {
          tarGzFileIs.close();
        } catch (IOException e) {
        }
      }
    }



上述是从文件抽取文件返回字符串,如果抽取返回文件,这可做如下修改:

while (entry != null) {
        if (entry.getName().contains(_snapshotID)) {
          snapshotFile = new File(newSnapshotFilePath);
          os = new FileOutputStream(snapshotFile);
          IOUtils.copy(tis, os);
          break;
        }
        entry = tis.getNextTarEntry();
      }

分享到:
评论

相关推荐

    coreseek-3.2.14.tar.gz

    "coreseek-3.2.14.tar.gz"是一个压缩包文件,其中包含了CoreSeek的3.2.14版本。CoreSeek是一个开源全文搜索引擎系统,它基于Sphinx技术,为中文用户提供高效的全文检索服务。Sphinx是一款强大的、快速的全文搜索引擎...

    Java_SDK.tar.gz_etl程序

    在本场景中,"Java_SDK.tar.gz" 是一个压缩文件,它包含了Java SDK的相关内容,以.tar.gz格式封装,这种格式常用于Linux和Unix系统,用于归档和压缩文件,以便于存储和传输。 "etl程序"是指数据提取(Extract)、...

    mitie.tar.gz 资源包

    这个资源包“mitie.tar.gz”包含了MITIE的完整源代码、预训练模型和其他相关资源,方便用户免费下载和使用。 1. **dlib库**:dlib是一个通用的C++库,主要用于机器学习和计算机视觉。它包含了许多优化算法和工具,...

    apache-hive-3.1.2-bin.tar.gz

    - 数据ETL(提取、转换、加载):Hive可以用于从不同数据源抽取数据,转换为适合分析的格式,然后加载到HDFS或其他存储系统。 - 实时分析:通过结合LLAP,Hive能够支持近实时的分析需求。 5. **Hive的扩展与集成*...

    Python库 | pyhanlp-0.1.32.tar.gz

    5. **关键词提取**:从大量文本中自动提取关键信息,对于摘要生成、舆情分析有显著帮助。 6. **情感分析**:通过对文本情感倾向的判断,pyhanlp可以辅助进行情绪识别和用户反馈分析。 在实际使用中,Python开发者...

    logstash-7.4.2.tar.gz.zip

    在您提供的“logstash-7.4.2.tar.gz.zip”文件中,包含的是Logstash 7.4.2版本的Linux部署包。这个版本可能包含了以下关键组件: 1. **bin** 目录:包含Logstash的可执行文件,如`logstash`命令行工具,以及相关的...

    PyPI 官网下载 | pyhanlp-0.1.29.tar.gz

    ".tar.gz"是Unix/Linux系统中常见的归档压缩格式,用于将多个文件打包成一个单一的文件以便于传输和存储。解压后,我们可以得到名为"pyhanlp-0.1.29"的目录,里面包含了源代码、文档、测试文件等资源。 pyhanlp,...

    Python库 | tika-1.13.tar.gz

    在Python中使用tika-1.13,首先需要解压下载的".tar.gz"文件,这通常包含源代码、文档和其他相关资源。解压后,可以通过Python的setuptools或pip进行安装,以便在项目中使用。安装完成后,我们就可以通过导入`tika`...

    apache-any23-core-0.7.0-incubating.tar.gz

    标题中的"apache-any23-core-0.7.0-incubating.tar.gz"是一个开源项目Apache Any23的核心组件的归档文件,版本为0.7.0,它是在Apache孵化器(Incubating)阶段的产物。这个文件是用gzip压缩格式打包的,通常在Linux...

    doxygen-RTAI.tar.gz

    Doxygen是一个流行的源代码文档生成工具,它可以从C、C++、Java等语言的源代码中抽取文档信息,生成结构化的HTML或PDF文档。 RTAI的主要目标是为Linux提供低延迟、高确定性的执行环境,使它能够处理严格的时间约束...

    gettext-0.22.3.tar.gz

    它能解析多种编程语言(如 C、C++、Python、Java 等)的源文件,并将其中的文本字符串抽取出来,生成一种叫做 PO(Portable Object)格式的文件,便于翻译人员进行工作。 2. **msgfmt**:此工具将翻译人员完成的 PO...

    PyPI 官网下载 | corenlp-python-1.1.0.tar.gz

    首先,我们来看一下标题中的"PyPI 官网下载 | corenlp-python-1.1.0.tar.gz",这表明我们可以从Python的官方包管理器PyPI上下载到CoreNLP的Python版本,版本号为1.1.0,文件格式为tar.gz。这个压缩包包含了Python库...

    Python库 | cogroo4py-0.4.4.tar.gz

    - **信息抽取**:在需要从葡萄牙语文本中提取关键信息的项目中,`cogroo4py`可以帮助定位和识别关键实体和结构。 5. **扩展和社区支持** `cogroo4py`作为一个开源项目,其背后有着活跃的开发者社区,不断更新和...

    gate_v8.1.p01.tar.gz

    在这个压缩包"gate_v8.1.p01.tar.gz"中,主要包含以下内容: 1. **Gate运行时环境**:这是执行Gate应用程序的基础,包括所有必要的库和运行时组件。 2. **开发工具**:如Gate Developer,用于创建、测试和调试...

    gettext-0.19.8.tar.gz

    它能解析多种编程语言,包括C、C++、Python、Java等,将这些语言中的字符串抽取出来,生成一种名为POT(Portable Object Template)的模板文件,供翻译人员进行翻译。 2. **msgmerge**:当源代码中的字符串发生变化...

    gettext-0.10.40.tar.gz

    - **xgettext工具**:这个命令行工具可以从源代码中自动提取出需要翻译的字符串,并生成PO文件。支持多种编程语言,如C、C++、Python、Java等。 - **msgfmt工具**:将编辑后的PO文件编译成MO文件,供程序在运行时...

    sqoop-1.4.6-cdh5.16.2.tar.gz

    在大数据处理中,数据抽取是一个关键步骤,它涉及到将结构化数据从传统的数据库导入到 Hadoop 集群,或者从 Hadoop 导出回数据库,以便进行分析或进一步的处理。 Sqoop-1.4.6-cdh5.16.2 是 Cloudera Distribution ...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    kettle_使用中的一些常见问题.docx

    当尝试从 Excel 文件中抽取数据并插入到 Oracle 9 数据库时,可能会遇到如下错误: ``` 2008/06/25 13:30:57 - INSERT row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:00:00.000] 2008/06/25 13:30:57 ...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

Global site tag (gtag.js) - Google Analytics