java 压缩流_Java IO--压缩流

import java.io.File ;

import java.io.FileInputStream ;

import java.io.InputStream ;

import java.util.zip.ZipEntry ;

import java.util.zip.ZipOutputStream ;

import java.io.FileOutputStream ;

public class ZipOutputStreamDemo02{

public static void main(String args[]) throws Exception{// 所有异常抛出

File file = new File("d:" + File.separator + "mldn") ;// 定义要压缩的文件夹

File zipFile = new File("d:" + File.separator + "mldndir.zip") ;// 定义压缩文件名称

InputStream input = null ;// 定义文件输入流

ZipOutputStream zipOut = null ;// 声明压缩流对象

zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;

zipOut.setComment("www.mldnjava.cn") ;// 设置注释

int temp = 0 ;

if(file.isDirectory()){// 判断是否是文件夹

File lists[] = file.listFiles() ;// 列出全部文件

for(int i=0;i

input = new FileInputStream(lists[i]) ;// 定义文件的输入流

zipOut.putNextEntry(new ZipEntry(file.getName()

+File.separator+lists[i].getName())) ;// 设置ZipEntry对象

while((temp=input.read())!=-1){// 读取内容

zipOut.write(temp) ;// 压缩输出

}

input.close() ;// 关闭输入流

}

}

zipOut.close() ;// 关闭输出流

}

};

ZipFile:

f15b9b89d3b23ded5b3bae89a8543db3.png

ZipFile在实例化的时候必须接收File类的实例,此File类的实例是指向一个压缩的*.zip文件。

为ZipFile实例化:

import java.io.File ;

import java.io.FileInputStream ;

import java.io.InputStream ;

import java.util.zip.ZipEntry ;

import java.util.zip.ZipOutputStream ;

import java.util.zip.ZipFile ;

import java.io.FileOutputStream ;

public class ZipFileDemo01{

public static void main(String args[]) throws Exception{// 所有异常抛出

File file = new File("d:" + File.separator + "mldn.zip") ;// 找到压缩文件

ZipFile zipFile = new ZipFile(file) ;// 实例化ZipFile对象

System.out.println("压缩文件的名称:" + zipFile.getName()) ;// 得到压缩文件的名称

}

};

通过ZipFile文件,为mldn.zip进行解压缩操作。

import java.io.File ;

import java.io.FileInputStream ;

import java.io.InputStream ;

import java.io.OutputStream ;

import java.util.zip.ZipEntry ;

import java.util.zip.ZipOutputStream ;

import java.util.zip.ZipFile ;

import java.io.FileOutputStream ;

public class ZipFileDemo02{

public static void main(String args[]) throws Exception{// 所有异常抛出

File file = new File("d:" + File.separator + "mldn.zip") ;// 找到压缩文件

File outputFile = new File("d:" + File.separator + "mldn_unzip.txt") ; // 定义解压缩的文件名称

ZipFile zipFile = new ZipFile(file) ;// 实例化ZipFile对象

ZipEntry entry = zipFile.getEntry("mldn.txt") ;// 得到一个压缩实体

OutputStream out = new FileOutputStream(outputFile) ; // 实例化输出流

InputStream input = zipFile.getInputStream(entry) ;// 得到一个压缩实体的输入流

int temp = 0 ;

while((temp=input.read())!=-1){

out.write(temp) ;

}

input.close() ;// 关闭输入流

out.close() ;// 关闭输出流

}

};

以上的操作操作中,有一个问题,必须知道压缩文件中的每一个压缩实例的名称才可以进行解压缩操作,而如果现在假设是一个文件夹呢?

ZipInputStream:

定义:

faa5911427549ba3fbfcc5a971cdc5ba.png

fee5eeca8d50fcf058c10b8794e863f5.png

import java.io.File ;

import java.io.FileInputStream ;

import java.io.InputStream ;

import java.util.zip.ZipEntry ;

import java.util.zip.ZipInputStream ;

import java.io.FileInputStream ;

public class ZipInputStreamDemo01{

public static void main(String args[]) throws Exception{// 所有异常抛出

File zipFile = new File("d:" + File.separator + "mldn.zip") ;// 定义压缩文件名称

ZipInputStream input = null ;// 定义压缩输入流

input = new ZipInputStream(new FileInputStream(zipFile)) ;// 实例化ZIpInputStream

ZipEntry entry = input.getNextEntry() ;// 得到一个压缩实体

System.out.println("压缩实体名称:" + entry.getName()) ;

input.close() ;

}

};

98688f2ecc436c95d3da8fd1ce5526b8.png

import java.io.File ;

import java.io.OutputStream ;

import java.io.InputStream ;

import java.util.zip.ZipEntry ;

import java.util.zip.ZipFile ;

import java.util.zip.ZipInputStream ;

import java.io.FileInputStream ;

import java.io.FileOutputStream ;

public class ZipInputStreamDemo02{

public static void main(String args[]) throws Exception{// 所有异常抛出

File file = new File("d:" + File.separator + "mldndir.zip") ;// 定义压缩文件名称

File outFile = null ;// 输出文件的时候要有文件夹的操作

ZipFile zipFile = new ZipFile(file) ;// 实例化ZipFile对象

ZipInputStream zipInput = null ;// 定义压缩输入流

OutputStream out = null ;// 定义输出流,用于输出每一个实体内容

InputStream input = null ;// 定义输入流,读取每一个ZipEntry

ZipEntry entry = null ;// 每一个压缩实体

zipInput = new ZipInputStream(new FileInputStream(file)) ;// 实例化ZIpInputStream

while((entry = zipInput.getNextEntry())!=null){// 得到一个压缩实体

System.out.println("解压缩" + entry.getName() + "文件。") ;

outFile = new File("d:" + File.separator + entry.getName()) ;// 定义输出的文件路径

if(!outFile.getParentFile().exists()){// 如果输出文件夹不存在

outFile.getParentFile().mkdir() ;// 创建文件夹

}

if(!outFile.exists()){// 判断输出文件是否存在

outFile.createNewFile() ;// 创建文件

}

input = zipFile.getInputStream(entry) ;// 得到每一个实体的输入流

out = new FileOutputStream(outFile) ;// 实例化文件输出流

int temp = 0 ;

while((temp=input.read())!=-1){

out.write(temp) ;

}

input.close() ;// 关闭输入流

out.close() ;// 关闭输出流

}

input.close() ;

}

};

总结:

56016bfe4ca754f93b7baa9fafa1bd0e.png

62227ef848884ab7e7f6ebe28d8d3805.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值