【发布时间】:2014-03-31 22:04:01
【问题描述】:
我一直在尝试在我的一个程序中实现一种压缩方法。我希望它接收一个流,压缩它,然后返回压缩流(它返回一个流,因为我希望能够将流传递给另一个函数,而不必将其保存到文件并稍后重新读取) .我有一个基于 GZipStream 的 msdn 示例的工作测试版本,这就是我尝试将其转换为接收和返回流时的想法:
public static Stream compress(Stream fileToCompress)
{
using (MemoryStream compressedFileStream = new MemoryStream())
{
using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
{
fileToCompress.CopyTo(compressionStream);
return compressionStream;
}
}
}
将返回的流保存到文件(以另一种方法)会导致创建一个 0 字节的文件(非常有效的压缩,对吧?)。
我试过寻找othersolutions,但我找不到任何使用流的东西,我尝试转换也遇到了同样的问题。
编辑:为了记录,我尝试使用 DeflateStream 来获得相同的结果。
EDIT2:原来是测试程序没有正确保存。感谢您的帮助。
【问题讨论】:
标签: c# stream compression