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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值