【发布时间】:2012-05-18 04:35:35
【问题描述】:
我正在尝试通过WCF(一些 GB)发送大量数据。我想在使用 Streams 读取文件时压缩文件,但看起来 DeflateStream 有两种模式:
- 压缩(写入流)
- 解压(读取流)
这些模式都不适用于我的情况。我想从磁盘读取一个未压缩的文件并通过 WCF 返回一个压缩流。
有没有办法这样做,或者我必须使用临时文件(或 MemoryStream)?
是缺少功能还是由于某种原因无法实现?
【问题讨论】:
-
您确定从
new DeflateStream(fileStream, CompressionMode.Compress)阅读不起作用吗? -
new DeflateStream(fi.OpenRead(), CompressionMode.Compress) 抛出“基本流不可写”
-
此外,DeflateStream.Read 帮助说:“将许多解压缩的字节读入指定的字节数组。” DeflateStream.Write 说:“将压缩字节从指定的字节数组写入底层流”
-
在纸上画图看看你想压缩什么。 (文件 -> 读取文件的方法 -> WCF 通道 -> 可选网络 -> 接收器)。您很有可能在错误的时间尝试压缩(即发送压缩字节数组或正确进行响应流)。
-
很简单,我想从磁盘中读取一个Stream,边读取边压缩,然后通过WCF发送可读流。问题是它只有在写 :S 时才会压缩
标签: c# wcf stream compression deflate