下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分与合(6和7)主讲
- 中医学的哲学基础-五行学说课件
- 新闻记者职业资格《新闻采编实务》考试题库(含答案)
- 2024年《招标采购专业知识与法律法规》考前通关必练题库(含答案)
- 数学教案七上第四讲有理数的运算复习课
- 2024-2025学年高一【数学(人教A版)】同角三角函数的基本关系-教学设计
- 2024-2025学年高一【数学(人教A版)】不同函数增长的差异-教学设计
- 生物必修三第二章教案
- 有关旧书回收的调查问卷
- 《个性的心理特征》课件
- 退耕还林工程
- 英国工人阶级状况
- 2023乳腺癌术后淋巴水肿中西医结合诊治中国专家共识(最全版)
- VTE相关知识考核试题及答案
- 冰岛-Microsoft-PowerPoint-演示文稿
- GB/T 13658-2015多亚甲基多苯基异氰酸酯
- GB/T 12706.1-2020额定电压1 kV(Um=1.2 kV)到35 kV(Um=40.5 kV)挤包绝缘电力电缆及附件第1部分:额定电压1 kV(Um=1.2 kV)和3 kV(Um=3.6 kV)电缆
- 高中数学三角函数的图像与性质优秀课件
- 《插花艺术》课程大作业
- 医疗质量管理汇报课件
- 超星尔雅学习通《对话大国工匠致敬劳动模范(中国劳动关系学院)》章节测试答案
评论
0/150
提交评论