ZipOutputStream压缩文件

/**创建一个压缩文件,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;
}


注意:ZipEntry 与ZipOutputStream 不是用的java自带的类,import org.apache.tools.zip.*。java的java.util.zip包里也有这两个类,不过对中文的支持不佳,文件的注释与生成的文件名都不能用中文,否则乱码,不过对文件的内容不影响。
ant.jar包下载路径:http://download.csdn.net/detail/liu149339750/4513550

你可能感兴趣的:(java,String,list,File,buffer,byte)