using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.GZip;
namespace Compression { public class ZipClass {
public void ZipFile(string FileToZip, string ZipedFile , int CompressionLevel, int BlockSize) { //如果文件没有找到,则报错 if (! System.IO.File.Exists(FileToZip)) { throw new System.IO.FileNotFoundException ("The specified file " + FileToZip + " could not be found. Zipping aborderd"); }
system.io.filestream StreamToZip = new System.IO.FileStream (FileToZip,System.IO.FileMode.Open , System.IO.FileAccess.Read); System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile); ZipOutputStream ZipStream = new ZipOutputStream(ZipFile); ZipEntry ZipEntry = new ZipEntry("ZippedFile"); ZipStream.PutNextEntry(ZipEntry); ZipStream.SetLevel(CompressionLevel); byte[] buffer = new byte[BlockSize]; System.Int32 size =StreamToZip.Read(buffer,0,buffer.Length); ZipStream.Write(buffer,0,size); try { while (size <
byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); ZipEntry entry = new ZipEntry(file);
entry.datetime = DateTime.Now;
// set Size and the crc, because the information // about the size and crc should be stored in the header // if it is not set it is automatically written in the footer. // (in this case size == crc == -1 in the header) // Some ZIP programs have problems with zip files that don"t store // the size and crc in the header. entry.Size = fs.Length; fs.Close();