
本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.概念
压缩流可以将输入的数据变为压缩格式后进行输出,或者读取压缩格式的数据后,解压为正常数据。
2.压缩步骤
(1)生成一个压缩类对象,这个对象来自于一个".zip"的文件,通过它产生一ZipOutputStream对象;
(2)生成压缩对象入口,因为需要被压缩的文件不止一个。需要用ZipEntry方法生成压缩入口文件后才能放进压缩文件;
(3)用putNextEntry将压缩入口放入压缩文件;
(4)将文件内容写入了out.write(),将压缩入口和文件流关闭。
3.目录压缩
importjava.io.*;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipOutputStream;
publicclassZipStreamExam2{
publicstaticvoidmain(String[]args){
try{
Filefile=newFile("d:\\zipmultidir");
ZipOutputStreamzos=newZipOutputStream(newBufferedOutputStream(newFileOutputStream("d:\\zipmultidir.zip")));
zipDir(file,zos,file);
zos.flush();
zos.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
//压缩一个目录至zip文件
privatestaticvoidzipDir(Filedir,ZipOutputStreamzos,FilerootDir)throwsIOException{
if(!dir.isDirectory())
return;
File[]files=dir.listFiles();
for(inti=0;i<files.length;i++){
if(files[i].isFile()){
System.out.println(files[i].getAbsolutePath());
Stringnow=files[i].getAbsolutePath();
Stringroot=rootDir.getAbsolutePath();
Stringname=now.substring(root.length()+1);
System.out.println(name);
FileInputStreamfis=newFileInputStream(files[i]);
bytebuf[]=newbyte[1024];
intlen=0;
ZipEntryze=newZipEntry(name);
zos.putNextEntry(ze);
while((len=fis.read(buf))!=-1){
zos.write(buf,0,len);
}
fis.close();
}elseif(files[i].isDirectory()){
zipDir(files[i],zos,rootDir);
}
}
}
}
4.解压到目录
importjava.io.*;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipInputStream;
/**
*Createdbytest2on2016/8/19.
*/
publicclassZipStreamExam3{
publicstaticvoidmain(String[]args){
try{
FilesrcFile=newFile("d:\\zipmultidir.zip");
System.out.println(srcFile.getCanonicalPath());
StringcurDir=srcFile.getParent()+File.separator+"destDir"+File.separator;
ZipInputStreamzipInputStream=newZipInputStream(newBufferedInputStream(newFileInputStream(srcFile)));
ZipEntryze=null;
byte[]buf=newbyte[1024];
intlen=0;
while((ze=zipInputStream.getNextEntry())!=null){
StringfilePath=curDir+ze.getName();
FiledestFile=newFile(filePath);
FiledestDir=newFile(destFile.getParent());
if(!destDir.exists()){
destDir.mkdirs();
}
BufferedOutputStreambufferedOutputStream=newBufferedOutputStream(newFileOutputStream(destFile));
while((len=zipInputStream.read(buf))!=-1){
bufferedOutputStream.write(buf,0,len);
}
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
zipInputStream.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}原文来自:https://www.py.cn © 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



















































暂无评论内容