(与初学者分享,高手都会,但高手不一定与初学者分享源码)解决java压缩,解压中文目录、文件名问题。
中文目录,中文文件名,文件夹下有zip压缩包都可以。需要ant.jar压缩:
//import java.util.zip.*;
import org.apache.tools.zip.*;
import java.io.*;
public class zip{
public static void doZip(ZipOutputStream zo,String fname,String zpath)throws Exception{
File f=new File(fname);
String[] fs=f.list();
for(int i=0;i<fs.length;i++){
String fpath=f.getPath().replace("\\","/")+File.separator+fs[i];
File file=new File(fpath);
if(file.isDirectory()){
ZipEntry entry=new ZipEntry(zpath+fs[i]+File.separator);
zo.putNextEntry(entry);
doZip(zo,fpath,zpath+fs[i]+File.separator);
continue;
}ZipEntry entry=new ZipEntry(zpath+fs[i]);
zo.putNextEntry(entry);
FileInputStream fin=new FileInputStream(fpath);
byte[] data=new byte[fin.available()];
fin.read(data);
zo.write(data);
fin.close();
zo.closeEntry();
}
}
public static void main(String[] args)throws Exception{
ZipOutputStream zo=new ZipOutputStream(new FileOutputStream("c:\\test.zip"));
zo.setEncoding("gbk");
zip.doZip(zo,"c:\\ww","");
zo.close();}
}
解压:
import org.apache.tools.ant.taskdefs.*;
import org.apache.tools.ant.*;
import java.io.*;
import java.util.*;
public class unzip{
static public void unzip(String zipFilepath, String destinationDir) { 
final class Expander extends Expand { 
public Expander() { 
project = new Project(); 
project.init(); 
taskType = "unzip"; 
taskName = "unzip"; 
target = new Target(); 


Expander expander = new Expander(); 
expander.setEncoding("GBK"); 
expander.setSrc(new File(zipFilepath)); 
expander.setDest(new File(destinationDir)); 
expander.execute(); 
}public static void main(String[] args)throws Exception{
unzip("c:\\test.zip","c:\\test");
}}

解决方案 »

  1.   

    to 楼上想不到贴个代码还要被BS。我说的是高手不一定开源,“不一定”你看清楚没有?
      

  2.   

    javaeye你去试试,你去发个贴要个什么代码,看有没有人理你,看你发个贴会不会被人删掉?
    某些高手水平确实高,除了会训人,助人为乐的品德就差了点呗(比如你们的项目经理,技术总监之流)。
    所以我说高手不一定开源没什么错。
      

  3.   

    javaeye不但在技术板,就是在它那个海阔天空(闲聊的板块,相当csdn的水源),不是他们熟悉的人去发个贴,都要被删。那是相当保守,相当排外。不是我胡说,你去试试就知道了。
    所以我说高手不一定开源没什么错。
      

  4.   

    我非常感兴趣 但是你的这个只支持zip 我想要调用winrar解压rar的