700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java实现文件夹打包zip

java实现文件夹打包zip

时间:2023-01-30 09:32:58

相关推荐

java实现文件夹打包zip

和Windows直接右键操作压缩包一样,代码如下,可以直接拿去运行。

package com.corilead;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class Test {public static void main(String[] args) throws Exception {Test3 test = new Test();String packagePath = "d:\\test"; //选中的文件夹test3.packageZip(packagePath);}public void packageZip(String filesPath) throws Exception {// 要被压缩的文件夹File file = new File(filesPath); //需要压缩的文件夹File zipFile = new File(filesPath+".zip"); //放于和需要压缩的文件夹同级目录ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));isDirectory(file,zipOut,"",true); //判断是否为文件夹zipOut.close();}public void isDirectory(File file, ZipOutputStream zipOutputStream, String filePath, boolean flag) throws IOException {//判断是否为问加减if(file.isDirectory()){File[] files = file.listFiles(); //获取该文件夹下所有文件(包含文件夹)filePath = flag==true?file.getName():filePath + File.separator + file.getName(); //首次为选中的文件夹,即根目录,之后递归实现拼接目录for(int i = 0; i < files.length; ++i){//判断子文件是否为文件夹if(files[i].isDirectory()){//进入递归,flag置false 即当前文件夹下仍包含文件夹isDirectory(files[i],zipOutputStream,filePath,false);}else{//不为文件夹则进行压缩InputStream input = new FileInputStream(files[i]);zipOutputStream.putNextEntry(new ZipEntry(filePath+File.separator+files[i].getName()));int temp = 0;while((temp = input.read()) != -1){zipOutputStream.write(temp);}input.close();}}}else{//将子文件夹下的文件进行压缩InputStream input = new FileInputStream(file);zipOutputStream.putNextEntry(new ZipEntry(file.getPath()));int temp = 0;while((temp = input.read()) != -1){zipOutputStream.write(temp);}input.close();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。