本教程操作环境: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
暂无评论内容