这两天要实现一个功能,中间因为走了一点弯路,呵呵,所以记下来!
功能:
创建几个文本文件,然后将它们压缩为一个zip文件。 下面是压缩的helper.
using
using System.Collections;
using
System.Collections.Generic;
using
System.Text;
using
System.IO;
using
ICSharpCode.SharpZipLib.Zip;
using
ICSharpCode.SharpZipLib.Core;
using
ICSharpCode.SharpZipLib.Checksums;
namespace
{
GadgetTestpublic class ZipHelper
{
{
m_ZipFile = zipFile;
m_files =
}
{
m_files.Add(
}
{
private string m_ZipFile;private ArrayList m_files;public ZipHelper(string zipFile)new ArrayList();public void AddFileItem(string fileName, string fileContent)new FileItem(fileName, fileContent));public void Compress()//System.IO.FileStream ZipFile = new FileStream(m_ZipFile, FileMode.Create);
System.IO.
{
ZipStream.SetLevel(9);
{
FileStream ZipFile = File.Create(m_ZipFile);using (ZipOutputStream ZipStream = new ZipOutputStream(ZipFile))int index = 0;Crc32 crc = new Crc32();foreach (object var in m_files)FileItem fileItem = (FileItem)var;ZipEntry ZipEntry = new ZipEntry(fileItem.FileName);//必须正确的设置crc和size,否则Winzip解压时会有问题。
crc.Reset();
crc.Update(fileItem.FileContent);
ZipEntry.Size = fileItem.FileContent.Length;
ZipEntry.Crc = crc.Value;
ZipStream.PutNextEntry(ZipEntry);
try
{
ZipStream.Write(fileItem.FileContent,0,fileItem.FileContent.Length);
ZipStream.CloseEntry();
}
{
System.Diagnostics.
}
}
ZipStream.Flush();
ZipStream.Close();
}
ZipFile.Close();
}
}
catch (System.Exception ex)Debug.WriteLine(ex.Message);internal class FileItem
{
{
m_fileContent = fileContent;
//不同的Encoding格式会导致最后的文本文件的format不一样。
m_content =
m_fileName = fileName;
}
{
}
{
private string m_fileName;private string m_fileContent;private byte[] m_content;public FileItem(string fileName, string fileContent)Encoding.UTF8.GetBytes(fileContent); public string FileNameget { return m_fileName; } public byte[] FileContentget
{
}
}
}
}
return m_content;
System;
发表评论