通过流进行解压缩文件

这里为了使代码更加简洁,直接用了transfer来挂接两路流的传输操作。

// 初始化文件输入流
    tb_stream_ref_t istream = tb_stream_init_from_url("/home/file.txt");

    // 初始化文件输出流
    tb_stream_ref_t ostream = tb_stream_init_from_file("/home/file.gz", TB_FILE_MODE_RW | TB_FILE_MODE_CREAT | TB_FILE_MODE_BINARY | TB_FILE_MODE_TRUNC);

    // 初始化解压缩流,以istream作为输入
    tb_stream_ref_t fstream = tb_stream_init_filter_from_zip(istream, TB_ZIP_ALGO_GZIP, TB_ZIP_ACTION_INFLATE);

    // 初始化压缩流,以istream作为输入
    //tb_stream_ref_t fstream = tb_stream_init_filter_from_zip(istream, TB_ZIP_ALGO_GZIP, TB_ZIP_ACTION_DEFLATE);    

    // 进行流传输,并且通过 fstream进行中间外挂解压、压缩
    if (istream && ostream && fstream)
    {
        /* 保存流数据,如果每个流都还没有调用tb_stream_open打开过
         * 这里会自动帮你打开,这样上层接口使用上,看上去更加简洁明了
         *
         * 后面三个参数主要用于:限速、进度信息回调,这些之后再详细说明
         * 现在只需要传空就行了
         *
         * save 是 实际传输的数据大小,失败返回:-1
         */
        tb_hong_t save = tb_transfer_done(fstream, ostream, 0, tb_null, tb_null);
    }

    // 释放流数据
    if (fstream) tb_stream_exit(fstream);
    if (istream) tb_stream_exit(istream);
    if (ostream) tb_stream_exit(ostream);
时间: 2024-10-16 12:48:18

通过流进行解压缩文件的相关文章

Java 流(Stream)、文件(File)和IO

Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java为I/O提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本文讲述最基本的和流与I/O相关的功能.我们将通过一个个例子来学习这些功能. 读取控制台输入 Java的控制台输入由System.in完成. 为了获得一

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

Java实现压缩文件与解压缩文件

由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或者解压的文件存在非英文字符(比如中文.以色列文),在操作的过程中会存在问题:MALFORMAL Eception-- 以下是通过Apache的zip工具包进行压缩和解压的代码(需要ant.jar): package com.steven.file; import java.io.File; impo

Ubuntu中的解压缩文件的方式

记录Ubuntu下各种压缩和解压方式: .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirN

利用字节流和字节数组流是实现文件的复制

package ioxuexi; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;i

InputStream流解析 XML文件

1 // 根据InputStream流解析 XML文件 2 private void getNewsFromStream(InputStream is){ 3 // 1.创建XML pull 解析器 谷歌内置解析器 4 XmlPullParser xp = Xml.newPullParser(); 5 try { 6 //2.指定解析器要解析的文件 和解析文件所用到的编码方式 7 xp.setInput(is,"utf-8"); 8 //3.开始解析文件(在解析之前需要有 JavaBe

java——用递归和IO流来实现文件的复制

1 import java.io.ByteArrayInputStream; 2 import java.io.ByteArrayOutputStream; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.Ou

CentOS7,使用tar命令解压缩文件

我们经常会遇到打包成.gz格式的压缩包,这种包不是可执行自动安装包,这种包相当于是个zip包,其安装过程就是手动解压缩.编辑配置文件.配置环境变量的过程.通过以下命令可以加压缩一个gz文件: tar zxvf <.gzfile> <.gzfile>是指你需要解压缩的那个文件. 参数说明: z - 过滤gzip文件,即只能解压缩指定的gz格式文件. x - 解压缩(tar还能进行压缩包查看和打包,所以如果需要解压缩文件包,需要在命令行中指定x) v - 以详细模式显示出解压缩的过程.

nodejs用流来对文件操作

nodejs用流来对文件操作 by 伍雪颖 var fs = require('fs'); var reader = fs.createReadStream('in.txt'); var writer = fs.createWriteStream('out.txt'); reader.pipe(writer);