org.apache.tools.zip包解决java.util.zip包中文问题
使用java自带的类java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的文件/目录命名,如果有中文名,那么打包就会失败。在Ant.jar类库中也有zip类,引入org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,如果没有去下载个tomcat5.X,里面也有ant.jar,可以使用。例子如下:
java 代码
[*]import java.io.File;
[*]import org.apache.tools.zip.ZipOutputStream;
[*]import java.io.FileInputStream;
[*]import java.io.FileOutputStream;
[*]
[*]public class CompressBook {
[*] public CompressBook() {
[*] }
[*]
[*]public void zip(String inputFileName) throws Exception {
[*] String zipFileName="c:\\test.zip";//打包后文件名字
[*] System.out.println(zipFileName);
[*] zip(zipFileName, new File(inputFileName));
[*]
[*] }
[*]
[*] private void zip(String zipFileName, File inputFile)
[*] throws Exception {
[*] ZipOutputStream out = new ZipOutputStream(
[*]new FileOutputStream(zipFileName));
[*] zip(out, inputFile, "");
[*] System.out.println("zip done");
[*] out.close();
[*] }
[*]
[*] private void zip(ZipOutputStream out, File f, String base)
[*] throws Exception {
[*] if (f.isDirectory()) {
[*] File[] fl = f.listFiles();
[*] out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));
[*] base = base.length() == 0 ? "" : base + "/";
[*] for (int i = 0; i < fl.length; i++) {
[*] zip(out, fl, base + fl.getName());
[*] }
[*] }
[*] else {
[*] out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
[*] FileInputStream in = new FileInputStream(f);
[*] int b;
[*] System.out.println(base);
[*] while ( (b = in.read()) != -1) {
[*] out.write(b);
[*] }
[*] in.close();
[*] }
[*] }
[*]}
页:
[1]