JAVA实现将文件或是文件夹打包压缩成zip格式

来源:互联网 发布:数据分析师学什么专业 编辑:程序博客网 时间:2024/06/10 04:15
package com.yanhui.test;import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** *将文件或是文件夹打包压缩成zip格式 * @author ysc */public class TestZip3 {    private TestZip3(){};    /**     * 创建ZIP文件     * @param sourcePath 文件或文件夹路径     * @param zipPath 生成的zip文件存在路径(包括文件名)     */    public static void createZip(String sourcePath, String zipPath) {        FileOutputStream fos = null;        ZipOutputStream zos = null;        File sFile = null;        try {            fos = new FileOutputStream(zipPath);            zos = new ZipOutputStream(fos);            sFile = new File(sourcePath);            writeZip(sFile, "", zos);        } catch (FileNotFoundException e) {            e.printStackTrace();        } finally {            try {                if (zos != null) {                    zos.close();                }            } catch (IOException e) {                e.printStackTrace();            }            clearFiles(sourcePath);        }    }    private static void writeZip(File file, String parentPath, ZipOutputStream zos) {        if(file.exists()){            if(file.isDirectory()){//处理文件夹                parentPath+=file.getName()+File.separator;                File [] files=file.listFiles();                for(File f:files){                    writeZip(f, parentPath, zos);                }            }else{                FileInputStream fis=null;                DataInputStream dis=null;                try {                    fis=new FileInputStream(file);                    dis=new DataInputStream(new BufferedInputStream(fis));                    ZipEntry ze = new ZipEntry(parentPath + file.getName());                    zos.putNextEntry(ze);                    byte [] content=new byte[1024];                    int len;                    while((len=fis.read(content))!=-1){                        zos.write(content,0,len);                        zos.flush();                    }                } catch (FileNotFoundException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }finally{                    try {                        if(dis!=null){                            dis.close();                        }                    }catch(IOException e){                        e.printStackTrace();                    }                }            }        }    }       public static void main(String[] args) {        TestZip3.createZip("D:\\哈哈", "F:\\zip\\backup.zip");    }    //删除文件和目录    private static void clearFiles(String workspaceRootPath){        File file = new File(workspaceRootPath);        if(file.exists()){            deleteFile(file);        }    }    private static void deleteFile(File file){        if(file.isDirectory()){            File[] files = file.listFiles();            for(int i=0; i<files.length; i++){                deleteFile(files[i]);            }        }        file.delete();    }}

解析:将D盘中‘’哈哈‘’的文件夹中所有文件夹及文件打包成生成F盘中zip目录下的backup.zip文件。

全CSDN的丰(好)色(se)博客,这里有书本看不到的Java技术,电影院禁播的电影,欢迎关注QQ群494808400

0 0
原创粉丝点击