本文介绍用C1Zip的C1ZipFile类处理Zip文件,它包括创建、打开、编辑标准的Zip文件。还可以列出Zip文件中的条目,添加、删除、扩展或查看文件,压缩整个目录,并使用密码保护/加密。
C1ZipFile是处理zip文件的类。C1ZipFile具有一个C1ZipFile.Entries属性,该属性代表了一个zip文件中条目的集合。
创建Zip文件
创建:使用C1ZipFile的Create两个不同方法可以在数据流或是硬盘上创建一个新的Zip文件。
打开:使用C1ZipFile的Open两个不同方法可以打开数据流或是硬盘上的Zip文件。
处理Zip文件
列出Zip文件中的条目:通过C1ZipFile.Entrie集合获得所有在Zip文件中的条目。通过代码可以得到文件的详细信息,各个条目的路径信息,以及Zip文件的注释。
// fill out list var zec = _zipFile.Entries; listView.BeginUpdate(); foreach (C1ZipEntry ze in zec) { var fa = ze.Attributes; var entry = new String[] { FileName(ze.FileName), // file name, no extension FileExtension(ze.FileName), // file extension, no dot ze.Date.ToString("MM/dd/yy HH:mm"), // mod date/time ze.SizeUncompressedLong.ToString("#,##0"), // original size ze.SizeCompressedLong.ToString("#,##0"), // compressed size AttribString(ze.Attributes), // encode as "rahs" ((uint)ze.CRC32).ToString(), // CRC32 (unsigned looks better) ze.Comment // user comment }; var lvi = new ListViewItem(entry); lvi.Tag = ze; lvi.ImageIndex = ((ze.Attributes & FileAttributes.Directory) != 0)? 0: 1; if (ze.IsEncrypted) lvi.ImageIndex = 3; listView.Items.Add(lvi); }
添加文件:使用C1ZipFile.Entries.Add方法可以添加文件到当前打开的Zip文件中。
添加目录:使用C1ZipFile.Entries.AddFolder方法可以把整个目录下的所有文件添加到当前打开的Zip文件中。
压缩:用C1ZipFile.CompressionLevel属性获取和设置文件条目添加到Zip文件的压缩级别。首先设置C1ZipFile的CompressionLevel属性,然后用Add或AddFolder方法将文件添加到Zip文件中,就会使用设置的压缩级别添加。默认的压缩级别是C1.C1Zip.CompressionLevelEnum.DefaultCompression。该压缩级别的枚举类型如下:
// 摘要: // Specifies the level of compression to be applied when adding entries to a // C1.C1Zip.C1ZipFile. public enum CompressionLevelEnum { // 摘要: // High compression, high speed. DefaultCompression = -1, // // 摘要: // No Compression. NoCompression = 0, // // 摘要: // Low compression, highest speed. BestSpeed = 1, // // 摘要: // Highest compression, low speed. BestCompression = 9, }
删除文件:使用C1ZipFile.Entries.Remove方法从当前打开的Zip文件中删除某个条目。
扩展文件:使用C1ZipFile.Entries.Extract方法从当前打开的Zip文件中扩展文件。
文件注释:使用C1ZipFile.Comment属性获取或设置Zip文件中相关文件的注释。
密码保护:C1ZipFile.Password属性可以设置和获取密码,用于Zip文件添加和恢复文件条目。
运行本文附件的Demo,打开一个Zip文件,所有条目将如下所示,然后就可以用菜单进行添加、修改、删除等操作。
本文Demo源代码如下: