//生成的压缩文件为test.zip using (FileStream fsOut = File.Create("test.zip")) { //ZipOutputStream类的构造函数需要一个流,文件流、内存流都可以,压缩后的内容会写入到这个流中。 using (ZipOutputStream zipStream = new ZipOutputStream(fsOut)) { //准备把G盘根目录下的vcredist_x86.exe文件添加到压缩包中。 string fileName = @"C:\Users\Administrator\Desktop\bg_1.png"; FileInfo fi = new FileInfo(fileName); //entryName就是压缩包中文件的名称。 string entryName = "bg_1.png"; //ZipEntry类代表了一个压缩包中的一个项,可以是一个文件,也可以是一个目录。 ZipEntry newEntry = new ZipEntry(entryName); newEntry.DateTime = fi.LastWriteTime; newEntry.Size = fi.Length;//把压缩项的信息添加到ZipOutputStream中。 zipStream.PutNextEntry(newEntry); zipStream.SetComment("测试"); byte[] buffer = new byte[4096]; //把需要压缩文件以文件流的方式复制到ZipOutputStream中。 using (FileStream streamReader = File.OpenRead(fileName)) { StreamUtils.Copy(streamReader, zipStream, buffer); } zipStream.CloseEntry(); zipStream.IsStreamOwner = false; zipStream.Finish(); zipStream.Close(); } }
注意,这里有个坑。
一开始以为是设置ZipEntry里面的Comment属性,看了下java 的demo,发现是设置outputstream的setComment