将传入的文件内容包装成一个zip形式

import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

public class ZipUtil {
 static String encoding = "GBK";
 /**
  * 该方法需要将传入的文件内容包装成一个zip形式的文件流的形式。<br>
  * 即如果folderName={<b>"fd1"</b>,<b>"fd2"</b>},fileName={<b>"f1"</b>,<b>"f2"</b>},fileContent={<b>"内容1"</b>,<b>"内容2"</b>}<br>
  * ops=new FileOutputStream(<b>"c://test.zip"</b>)<br>
  *那么 <b>c://test.zip</b>文件应该是一个zip形式的压缩包,而该压缩包的内容应该为两个分别名为<b>fd1</b>、<b>fd2</b>的文件夹;<br>
  *而fd1文件夹下应该只有一个文本文件内容为<b>"内容1"</b>、文件名为<b>"f1"</b>的文件;<br>
  *而fd2文件夹下应该只有一个文本文件内容为<b>"内容2"</b>、文件名为<b>"f2"</b>的文件;
  *
  * @param ops    输出流,实际使用时会在该方法外创建一个文件流。
  * @param folderName  压缩包中的各个目录的目录名
  * @param fileName    压缩包中每个目录只能存在一个文件,该数组即是每个目录下的文件名,与<b>folderName</b>数组索引相对应
  * @param fileContent 压缩包中每个目录只能存在一个文件,该数组即是每个目录下的文件的内容,其内容只是一个String,与<b>folderName</b>、<b>fileName</b>数组索引相对应
  * @throws IOException
  */
 public void str2ZipStream(OutputStream ops ,String[] folderName, String[] fileName , String[] fileContent) throws IOException{
  CheckedOutputStream checked = new CheckedOutputStream(ops,new Adler32());
  ZipOutputStream zos = new ZipOutputStream(checked);
  
  //将文件所有信息打包成zip
  for (int i = 0; i < fileContent.length; i++) {
   ZipEntry entry = new ZipEntry(folderName[i]+"//"+fileName[i]);
   zos.putNextEntry(entry);
   zos.write(fileContent[i].getBytes(encoding));
  }
  zos.close();
 }
}

需要一ant.jar包

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值