衡水网站优化推广,建设网站前市场分析,制作一个网站需要注意什么,卖链接的网站【JAVA入门】Day45 - 压缩流 / 解压缩流 文章目录 【JAVA入门】Day45 - 压缩流 / 解压缩流一、解压缩流二、压缩流 在文件传输过程中#xff0c;文件体积比较大#xff0c;传输较慢#xff0c;因此我们发明了一种方法#xff0c;把文件里的数据压缩到一种压缩文件中#x…【JAVA入门】Day45 - 压缩流 / 解压缩流 文章目录 【JAVA入门】Day45 - 压缩流 / 解压缩流一、解压缩流二、压缩流 在文件传输过程中文件体积比较大传输较慢因此我们发明了一种方法把文件里的数据压缩到一种压缩文件中将体积减小传输完毕后再用解压缩方法把数据解压出来。这就是压缩流和解压缩流的诞生初衷。 解压缩流和压缩流在体系中的位置如下它们是字节输入输出流的高级包装类。
一、解压缩流 解压的本质是把压缩包中的每一个 ZipEntry 对象压缩包中的每一个文件都是一个 ZipEntry 对象按照层级拷贝到本地的另一个文件夹中。 解压缩流是把文件中的内容读入 JVM因此它属于输入流。 下面的代码演示了如何将一个本地 zip 文件解压。
package ZipStream;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;public class ZipStreamDemo1 {public static void main(String[] args) throws IOException {/*解压缩流D:\IdeaProjects\HelloWord\src\ZipStream\ZipFile.zip*///1.创建一个File表示要解压的压缩包File src new File(D:\\IdeaProjects\\HelloWord\\src\\ZipStream\\ZipFile.zip);//2.创建一个File表示解压的目的地File dest new File(D:\\IdeaProjects\\HelloWord\\src\\ZipStream);unzip(src,dest);}//定义一个方法用来解压public static void unzip(File src, File dest) throws IOException {//解压的本质把压缩包中的每一个文件或者文件夹读取出来//按照层级拷贝到目的地当中//创建一个解压缩流用来读取压缩包中的数据ZipInputStream zip new ZipInputStream(new FileInputStream(src));//先获取到压缩包中的每一个 zipEntry 对象ZipEntry entry;while ((entry zip.getNextEntry()) ! null) {System.out.println(entry);//遍历到了文件夹在目的地处创建一个同名文件夹//文件把它存放到目的地的dest文件夹中if (entry.isDirectory()) {//文件夹在dest处创建一个同名文件夹File file new File(dest, entry.toString());file.mkdirs();} else {//文件读取文件中的数据存放到目的地destFileOutputStream fos new FileOutputStream(entry.toString());int b;while ((b zip.read()) ! -1) {//写到目的地fos.write(b);}fos.close();//表示在压缩包中的一个文件处理完毕了zip.closeEntry();}}zip.close();}
}
二、压缩流 压缩的本质其实就是把每一个文件/文件夹看成 ZipEntry 对象放到压缩包中。 利用压缩流压缩一个文件的代码如下所示
package ZipStream;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class ZipStreamDemo2 {public static void main(String[] args) throws IOException {/*压缩流把a.txt打包成一个压缩包*///1.创建File对象表示要压缩的文件File src new File(D:\\IdeaProjects\\HelloWord\\src\\ZipStream\\a.txt);//2.创建File对象表示压缩包的位置File dest new File(D:\\IdeaProjects\\HelloWord\\src\\ZipStream);//3.调用方法来压缩toZip(src,dest);}public static void toZip(File src, File dest) throws IOException {//1.创建压缩流关联压缩包ZipOutputStream zos new ZipOutputStream(new FileOutputStream(new File(dest,a.txt)));//2.把要压缩的文件看成一个个的Entry对象表示压缩包里的每一个文件和文件夹ZipEntry entry new ZipEntry(a.txt);//3.把ZipEntry对象放到压缩包当中zos.putNextEntry(entry);//4.把src文件中的数据写到压缩包当中FileInputStream fis new FileInputStream(src);int b;while((b fis.read()) ! -1){zos.write(b);}zos.closeEntry();zos.close();}
}