这两天要实现一个功能,中间因为走了一点弯路,呵呵,所以记下来!

功能:

创建几个文本文件,然后将它们压缩为一个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;


评论

该日志第一篇评论

发表评论

评论也有版权!

click to change验证码