文件压缩实例

文件压缩

package com.nzf.file;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * 文件压缩实例
 * @author Administrator
 *
 */
public class CompressFile {

    /**
     * 文件压缩实例
     * @param zipOutput
     * @param file
     * @throws IOException
     */
    public static void addFile (ZipOutputStream zipOutput, File file) throws IOException{

        System.out.println("正在添加文件 :" + file.getAbsolutePath());

        // 每个压缩对象都为一个ZipEntry实例
        ZipEntry zipEntry = new ZipEntry(file.getName());

        // 将这个实例放入压缩文件中
        zipOutput.putNextEntry(zipEntry);

        //读取文件内容
        FileInputStream ins = new FileInputStream(file);

        byte[] tmp = new byte[1024];
        int len = 0;

        while((len = ins.read(tmp)) != -1) {
            zipOutput.write(tmp, 0, len);
        }

        ins.close();
        // 关闭当前的ZipEntry 实例
        zipOutput.closeEntry();
    }

    public static void main(String[] args) throws IOException{

        File sourceFolder = new File("E:/Qiyi/Offline");

        File targetFile = new File("E:/Qiyi.zip");

        //使用ZipOutputStream 创建压缩文件
        ZipOutputStream zipOutput = new ZipOutputStream(new FileOutputStream(targetFile));

        //列出该文件夹下的所有文件
        File[] subFiles = sourceFolder.listFiles(new FileFilter(){
            public boolean accept(File pathname){
                if (pathname.isFile()) {
                    return true;
                }
                return false;
            }
        });

        for(int i=0; i < subFiles.length; i++) {
            addFile(zipOutput, subFiles[i]);
        }

        zipOutput.close();
        System.out.println("\r\n文件压缩完成:" + targetFile.getAbsolutePath());
    }
}

猜你喜欢

转载自blog.csdn.net/qq_27464169/article/details/51079076