Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何返回一些内容的.NET流,但同时将其压缩_C#_.net_Stream - Fatal编程技术网

C# 如何返回一些内容的.NET流,但同时将其压缩

C# 如何返回一些内容的.NET流,但同时将其压缩,c#,.net,stream,C#,.net,Stream,我有一个很大的XDocument。我正试着从某个地方把这句话说出来: 公共流响应(Func源) 为此,我做了: Stream stream = new MemoryStream(); // Create a stream xmlDocument.Save(stream); // Save XDocument into the stream stream.Position = 0; return new StreamResponse(() => stream); 这很好 现在

我有一个很大的
XDocument
。我正试着从某个地方把这句话说出来:

公共流响应(Func源)

为此,我做了:

Stream stream = new MemoryStream();  // Create a stream
xmlDocument.Save(stream);      // Save XDocument into the stream
stream.Position = 0;

return new StreamResponse(() => stream);
这很好

现在,有没有可能改变这一点,让我从内存流中导出一个ZIP

像这样=>
XDocument=>MemoryStream=>ZIP流=>流端点

Stream stream = new MemoryStream();  // Create a stream
Stream compressed = new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionLevel.Optimal);
xmlDocument.Save(compressed);      // Save XDocument into the stream
compressed.Position = 0;

return new StreamResponse(() => stream);
文件:


GZipStream是来救你的

从MSDN:

GZipStream类 提供用于压缩和解压缩流的方法和属性

是的,使用 将内存流传递给save方法。大概是这样的:

     using (ZipFile zip = new ZipFile())
     {
         // add this map file into the "images" directory in the zip archive
         zip.AddFile("c:\\images\\personal\\7440-N49th.png", "images");
         // add the report into a different directory in the archive
         zip.AddFile("c:\\Reports\\2008-Regional-Sales-Report.pdf", "files");
         zip.AddFile("ReadMe.txt");
         zip.Save(myStream);
     }