我正在尝试使用 System.IO.Compression.ZipArchive 类创建一个只包含一个条目的新 ZIP 包,并将其保存到文件中。
using (MemoryStream zipStream = new MemoryStream())
{
using (ZipArchive zip = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
var entry = zip.CreateEntry("test.txt");
using (StreamWriter sw = new StreamWriter(entry.Open()))
{
sw.WriteLine(
"Etiam eros nunc, hendrerit nec malesuada vitae, pretium at ligula.");
}
然后我在WinRT中将ZIP保存到文件中:
var file = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("test.zip", CreationCollisionOption.ReplaceExisting);
zipStream.Position = 0;
using (Stream s = await file.OpenStreamForWriteAsync())
{
zipStream.CopyTo(s);
}
或在普通的.NET 4.5中:
using (FileStream fs = new FileStream(@"C:\Temp\test.zip", FileMode.Create))
{
zipStream.Position = 0;
zipStream.CopyTo(fs);
}
然而,我无法在Windows Explorer、WinRAR等软件中打开生成的文件。(我已经检查了生成的文件大小是否与zipStream的长度匹配,所以流本身已经正确地保存到文件中。)
我是做错了什么还是ZipArchive类存在问题?