您的位置:首页 > 其它

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

2010-11-23 16:38 225 查看
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包
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐