使用java自带的类 java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的文件/目录命名,如果有中文名,那么打包就会失败。在Ant.jar类库中也有zip类,引入 org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,如果没有去下载个tomcat5.X,里面也有ant.jar,可以使用。
例子如下:
java 代码
- importjava.io.File;
- importorg.apache.tools.zip.ZipOutputStream;
- importjava.io.FileInputStream;
- importjava.io.FileOutputStream;
- publicclassCompressBook{
- publicCompressBook(){
- }
- publicvoidzip(StringinputFileName)throwsException{
- StringzipFileName="c://test.zip";//打包后文件名字
- System.out.println(zipFileName);
- zip(zipFileName,newFile(inputFileName));
- }
- privatevoidzip(StringzipFileName,FileinputFile)
- throwsException{
- ZipOutputStreamout=newZipOutputStream(
- newFileOutputStream(zipFileName));
- zip(out,inputFile,"");
- System.out.println("zipdone");
- out.close();
- }
- privatevoidzip(ZipOutputStreamout,Filef,Stringbase)
- throwsException{
- if(f.isDirectory()){
- File[]fl=f.listFiles();
- out.putNextEntry(neworg.apache.tools.zip.ZipEntry(base+"/"));
- base=base.length()==0?"":base+"/";
- for(inti=0;i<fl.length;i++){
- zip(out,fl[i],base+fl[i].getName());
- }
- }
- else{
- out.putNextEntry(neworg.apache.tools.zip.ZipEntry(base));
- FileInputStreamin=newFileInputStream(f);
- intb;
- System.out.println(base);
- while((b=in.read())!=-1){
- out.write(b);
- }
- in.close();
- }
- }
- }
Java中文文件压缩
本文介绍如何使用Apache Tools库中的Zip类解决Java自带压缩工具不支持中文文件名的问题,并提供了一个具体的实现示例。
574

被折叠的 条评论
为什么被折叠?



