目录
解压缩流
压缩流
解压缩流
压缩包
压缩包里面的每一个文件在java中都是一个ZipEntry对象
把每一个ZipEntry按照层级拷贝到另一个文件夹当中
import java.io.*;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Main {
public static void main(String[] args){
//创建一个File表示要解压的压缩包
File src=new File("D\\untitled.zip");
//创建一个File表示解压的目的地
File dest=new File("D\\");
}
public static void unzip(File src,File dest) throws IOException {
//创建一个压缩流来读取压缩包中的数据
ZipInputStream zip=new ZipInputStream(new FileInputStream(src));
ZipEntry entry;
while((entry=zip.getNextEntry())!=null){
System.out.println(entry);
if(entry.isDirectory()){
//文件夹:需要在目的地dest处创建一个同样的文件夹
File file=new File(dest,entry.toString());
file.mkdirs();
}
else {
//文件:需要读取压缩包中的文件,并且把它存放到目的地dest文件夹中
FileOutputStream fos=new FileOutputStream(new File(dest,entry.toString()));
int b;
while((b=zip.read())!=-1){
//写到目的地
fos.write(b);
}
fos.close();
//表示在压缩包中的一个文件处理完毕了
zip.closeEntry();
}
}
zip.close();
}
}
压缩流
压缩单个文件
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Main {
public static void main(String[] args) throws IOException {
//创建File对象表示要压缩的文件
File src=new File("untitled\\a.txt");
//创建File对象表示压缩包的位置
File dest=new File("untitled\\");
//调用方法用来压缩
toZip(src,dest);
}
private static void toZip(File src, File dest) throws IOException {
//常见压缩流关联压缩包
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(new File(dest,"a.zip")));
//创建ZipEntry对象,表示压缩包里面的每一个文件和文件夹
ZipEntry entry=new ZipEntry("a.txt");
//把ZipEntry对象放到压缩包中
zos.putNextEntry(entry);
//把src文件夹中的数据写到压缩包当中
FileInputStream fis=new FileInputStream(src);
int b;
while((b=fis.read())!=-1)
zos.write(b);
zos.closeEntry();
zos.close();
}
}
压缩整个文件夹
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Main {
public static void main(String[] args) throws IOException {
//创建File对象表示要压缩的文件夹
File src=new File("untitled\\a");
//创建File对象表示压缩包放在哪里(压缩包的父级路径)
File destParent=src.getParentFile();
//创建File对象表示压缩包的路径
File dest=new File(destParent,src.getName()+".zip");
//创建压缩流关联压缩包
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(dest));
//获取src里面的每一个文件,变成ZipEntry对象,放到压缩包中
//重点
/*
* 参数一:数据源
* 参数二:压缩流
* 参数三:压缩包内部的路径
* */
toZip(src,zos,"");
//释放资源
zos.close();
}
public static void toZip(File src,ZipOutputStream zos,String name) throws IOException {
//进入src文件夹
File []files=src.listFiles();
//遍历数组
for (File file : files) {
if(file.isFile()){
//判断是文件,变成ZipEntry对象,放入压缩包当中
ZipEntry entry=new ZipEntry(name+"\\"+file.getName());
zos.putNextEntry(entry);
//读取文件中的数据,写到压缩包
FileInputStream fis=new FileInputStream(file);
int b;
while((b=fis.read())!=-1){
zos.write(b);
}
fis.close();
zos.closeEntry();
}
else {
//判断是文件夹,递归...
toZip(file,zos,name+"\\"+file.getName());
}
}
}
}
个人号推广
博客主页
朱道阳-CSDN博客
Web后端开发
https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482
Web前端开发
https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482
数据库开发
https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482
项目实战
https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482
算法与数据结构
https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482
计算机基础
https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482
回忆录
https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482