当前位置: 移动技术网 > IT编程>开发语言>Java > java生成压缩文件示例代码

java生成压缩文件示例代码

2019年07月22日  | 移动技术网IT编程  | 我要评论
代码: 复制代码 代码如下:import java.io.bufferedoutputstream;import java.io.file;import java.io.

代码:

复制代码 代码如下:

import java.io.bufferedoutputstream;
import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;

import org.apache.tools.zip.zipentry;
import org.apache.tools.zip.zipoutputstream;

/**
 * @project: test
 * @author chenssy
 * @date 2013-7-28
 * @description: 文件压缩工具类
 *                   将指定文件/文件夹压缩成zip、rar压缩文件
 */
public class compressedfileutil {
    /**
     * 默认构造函数
     */
    public compressedfileutil(){

    }

    /**
     * @desc 将源文件/文件夹生成指定格式的压缩文件,格式zip
     * @param resourepath 源文件/文件夹
     * @param targetpath  目的压缩文件保存路径
     * @return void
     * @throws exception
     */
    public void compressedfile(string resourcespath,string targetpath) throws exception{
        file resourcesfile = new file(resourcespath);     //源文件
        file targetfile = new file(targetpath);           //目的
        //如果目的路径不存在,则新建
        if(!targetfile.exists()){    
            targetfile.mkdirs(); 
        }

        string targetname = resourcesfile.getname()+".zip";   //目的压缩文件名
        fileoutputstream outputstream = new fileoutputstream(targetpath+"\\"+targetname);
        zipoutputstream out = new zipoutputstream(new bufferedoutputstream(outputstream));

        createcompressedfile(out, resourcesfile, "");

        out.close(); 
    }

    /**
     * @desc 生成压缩文件。
     *                  如果是文件夹,则使用递归,进行文件遍历、压缩
     *       如果是文件,直接压缩
     * @param out  输出流
     * @param file  目标文件
     * @return void
     * @throws exception
     */
    public void createcompressedfile(zipoutputstream out,file file,string dir) throws exception{
        //如果当前的是文件夹,则进行进一步处理
        if(file.isdirectory()){
            //得到文件列表信息
            file[] files = file.listfiles();
            //将文件夹添加到下一级打包目录
            out.putnextentry(new zipentry(dir+"/"));

            dir = dir.length() == 0 ? "" : dir +"/";

            //循环将文件夹中的文件打包
            for(int i = 0 ; i < files.length ; i++){
                createcompressedfile(out, files[i], dir + files[i].getname());         //递归处理
            }
        }
        else{   //当前的是文件,打包处理
            //文件输入流
            fileinputstream fis = new fileinputstream(file);

            out.putnextentry(new zipentry(dir));
            //进行写操作
            int j =  0;
            byte[] buffer = new byte[1024];
            while((j = fis.read(buffer)) > 0){
                out.write(buffer,0,j);
            }
            //关闭输入流
            fis.close();
        }
    }

    public static void main(string[] args){
        compressedfileutil compressedfileutil = new compressedfileutil();

        try {
            compressedfileutil.compressedfile("g:\\zip", "f:\\zip");
            system.out.println("压缩文件已经生成...");
        } catch (exception e) {
            system.out.println("压缩文件生成失败...");
            e.printstacktrace();
        }
    }
}

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网