使用Java实现文件的压缩和解压缩_第1页
使用Java实现文件的压缩和解压缩_第2页
使用Java实现文件的压缩和解压缩_第3页
使用Java实现文件的压缩和解压缩_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用Java实现文件的压缩和解压缩在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;功能:zip压缩、解压说明:本程序通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能.问题:由于java.util.zip包并不支持汉字,当zip文件中有名字为中文的文件时就会出现异常:"Exception in thread "main " java.lang.IllegalArgumentException at java.util.z

2、ip.ZipInputStream.getUTF8String(ZipInputStream.java:285)解决:方法1、修改import java.util.zip.ZipInputStream和ZipOutputStream.java.util.zip只支持UTF-8,Ant里面可以指定编码.方法2、使用Apache Ant里提供的zip工具。不使用java.util.zip的包,把ant.jar放到classpath中.程序中使用import org.apache.tools.zip.*;仅供编程学习参考.代码如下:java view plaincopyimport java.io.

3、*;import java.util.zip.*;/*author Winty*Usage:* 压缩:java Zip -zip "directoryName"* 解压:java Zip -unzip "fileName.zip"*/public class Zipprivate ZipInputStream zipIn; /解压Zipprivate ZipOutputStream zipOut; /压缩Zipprivate ZipEntry zipEntry;private static int bufSize; /size of bytespriva

4、te byte buf;private int readedBytes;public Zip()this(512);public Zip(int bufSize)this.bufSize = bufSize;this.buf = new bytethis.bufSize;/压缩文件夹内的文件public void doZip(String zipDirectory)/zipDirectoryPath:需要压缩的文件夹名File file;File zipDir;zipDir = new File(zipDirectory);String zipFileName = zipDir.getName

5、() + ".zip"/压缩后生成的zip文件名trythis.zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName);handleDir(zipDir , this.zipOut);this.zipOut.close();catch(IOException ioe)ioe.printStackTrace();/由doZip调用,递归完成目录文件读取private void handleDir(File dir , ZipOutputStream zipO

6、ut)throws IOExceptionFileInputStream fileIn;File files;files = dir.listFiles();if(files.length = 0)/如果目录为空,则单独创建之./ZipEntry的isDirectory()方法中,目录以"/"结尾.this.zipOut.putNextEntry(new ZipEntry(dir.toString() + "/");this.zipOut.closeEntry();else/如果目录不为空,则分别处理目录和文件.for(File fileName : f

7、iles)/System.out.println(fileName);if(fileName.isDirectory()handleDir(fileName , this.zipOut);elsefileIn = new FileInputStream(fileName);this.zipOut.putNextEntry(new ZipEntry(fileName.toString();while(this.readedBytes = fileIn.read(this.buf)>0)this.zipOut.write(this.buf , 0 , this.readedBytes);th

8、is.zipOut.closeEntry();/解压指定zip文件public void unZip(String unZipfileName)/unZipfileName需要解压的zip文件名FileOutputStream fileOut;File file;trythis.zipIn = new ZipInputStream (new BufferedInputStream(new FileInputStream(unZipfileName);while(this.zipEntry = this.zipIn.getNextEntry() != null)file = new File(t

9、his.zipEntry.getName();/System.out.println(file);/if(this.zipEntry.isDirectory()file.mkdirs();else/如果指定文件的目录不存在,则创建之.File parent = file.getParentFile();if(!parent.exists()parent.mkdirs();fileOut = new FileOutputStream(file);while( this.readedBytes = this.zipIn.read(this.buf) ) > 0)fileOut.write(t

10、his.buf , 0 , this.readedBytes );fileOut.close();this.zipIn.closeEntry();catch(IOException ioe)ioe.printStackTrace();/设置缓冲区大小public void setBufSize(int bufSize)this.bufSize = bufSize;/测试Zip类public static void main(String args)throws Exceptionif(args.length=2)String name = args1;Zip zip = new Zip();i

11、f(args0.equals("-zip")zip.doZip(name);else if(args0.equals("-unzip")zip.unZip(name);elseSystem.out.println("Usage:");System.out.println("压缩:java Zip -zip /directoryName");System.out.println("解压:java Zip -unzip /fileName.zip");throw new Exception("Arguments error!"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论