/**创建一个压缩文件,from为文件夹路径,to为创建好后压缩文件路径*/ public void CreateZip(String from,String to) throws IOException { List<File>list=getFiles(from); ZipOutputStream out=new ZipOutputStream(new FileOutputStream(new File(to))); for(File f:list) { InputStream in=new FileInputStream(f); String name=getRelName(from,f); ZipEntry en=new ZipEntry(new File(from).getName()+"/"+name); en.setSize(f.length()); out.putNextEntry(en); out.setComment("中文测试"); int len=0; byte[]buffer=new byte[1024]; while(-1!=(len=in.read(buffer))) { out.write(buffer, 0, len); } in.close(); } out.close(); } /**获取文件的相对路径*/ private String getRelName(String from,File f) { // TODO Auto-generated method stub String a=f.getAbsolutePath().replace(from+"\", ""); a=a.replace("\", "/"); System.out.println(from+"---"+a); return a; } /**获取路径下所有文件,包括文件夹下的*/ private List<File> getFiles(String sou) { List<File>list=new ArrayList<File>(); File f=new File(sou); File files[]=f.listFiles(); for(File file:files) { if(file.isFile()) { list.add(file); } else { list.addAll(getFiles(file.getPath())); } } return list; }
##########################################
转自:http://blog.csdn.net/liu149339750/article/details/7887701
##########################################