使用java.util.zip压缩文件夹,支持加密,增加描述详解编程语言

Java压缩辅助类(支持文件夹压缩,加密,增加描述)

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 
 
import nochump.util.extend.ZipOutput; 
 
import com.training.commons.file.FileUtils; 
 
/** 
 * 
* <p>Title: </p> 
* <p>desc: 
* <p>Copyright: Copyright(c)Gb 2012</p> 
* @author 三少 
* @website www.ij2ee.com 
* @time 下午4:00:13 
* @version 1.0 
* @since 
 */ 
public class ZipOutputStreamUtils { 
 
    public static void main(String args[]) throws IOException { 
        //zipFiles("D://zipTest","D://1.ZIP"); 
        zipFilesWithPwd("D://zipTest","D://1.ZIP", "123456"); 
    } 
 
    /** 
     * 
     * @param path 文件夹路径 
     * @param returnFileName 
     * @throws IOException 
     */ 
    public static void zipFiles(String path, String returnFileName) 
            throws IOException { 
        File inFile = new File(path); 
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream( 
                returnFileName)); 
        zos.setComment("多文件处理"); 
        zipFile(inFile, zos, ""); 
        zos.close(); 
    } 
 
    /* 
     * 压缩时候加密.. 
     */ 
    public static void zipFilesWithPwd(String zipDir, String zipName, 
            String password) { 
        File file = new File(zipDir); 
        byte[] zipByte = ZipOutput 
                .getEncryptZipByte(file.listFiles(), password); 
 
        FileUtils.writeByteFile(zipByte, new File(zipName)); 
 
    } 
 
    public static void zipFile(File inFile, ZipOutputStream zos, String dir) 
            throws IOException { 
 
        if (inFile.isDirectory()) { 
            File[] files = inFile.listFiles(); 
            for (File file : files) 
                zipFile(file, zos, inFile.getName()); 
        } else { 
            String entryName = null; 
            if (!"".equals(dir)) 
                entryName = inFile.getName(); 
            else 
                entryName = inFile.getName(); 
 
            ZipEntry entry = new ZipEntry(entryName); 
            zos.putNextEntry(entry); 
            InputStream is = new FileInputStream(inFile); 
            int len = 0; 
            while ((len = is.read()) != -1) 
                zos.write(len); 
            is.close(); 
        } 
 
    } 
 
    public static void deleteFile(File file) { 
        if (file.exists()) { // 判断文件是否存在 
            if (file.isFile()) { // 判断是否是文件 
                file.delete(); // delete()方法 你应该知道 是删除的意思; 
            } else if (file.isDirectory()) { // 否则如果它是一个目录 
                File files[] = file.listFiles(); // 声明目录下所有的文件 files[]; 
                for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件 
                    deleteFile(files[i]); // 把每个文件 用这个方法进行迭代 
                } 
            } 
            file.delete(); 
        } else { 
            System.out.println("所删除的文件不存在!" + '/n'); 
        } 
    } 
 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10986.html

(0)
上一篇 2021年7月19日 10:38
下一篇 2021年7月19日 10:38

相关推荐

发表回复

登录后才能评论