.NET/C# Zip打包文件

使用ZipFile类,通过Stream的方式进行zip打包

 using (MemoryStream memory = new MemoryStream())
                {
                    using MemoryStream txt = new MemoryStream(Encoding.UTF8.GetBytes("这是一个测试"));
                    using (ZipArchive archive = new ZipArchive(memory, ZipArchiveMode.Create, true))
                    {
                        var demoFile = archive.CreateEntry("test.txt");
                        using (var entryStream = demoFile.Open())
                        using (var streamWriter = new StreamWriter(entryStream).BaseStream)
                        {
                            txt.Position = 0;
                            txt.CopyTo(streamWriter);
                        }
                    }
                    using (var fileStream = new FileStream($@"D:\Desktop\{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-dd-ss-fffffff")}.zip", FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    {
                        memory.Position = 0;
                        memory.CopyTo(fileStream);
                    }
                }
            };

 注意事项

1.ZipArchive的第三个参数必须为true,否则在进行保存时可能会出现stream以关闭的情况。

2.可能会出现保存的zip包无法打开的错误,大概描述为 文件末端错误 ,原因为stream的关闭顺序不正确,请仔细检查。

posted on 2021-06-09 14:35  进击の咸鱼  阅读(518)  评论(0编辑  收藏  举报

导航