我有一个wcf服务,它向我发送流(通常是大流)。作为客户端应用程序,我的角色是通过WCF获取流并将其保存到磁盘。我写了一些代码,但似乎是先把流写入ram,然后从ram写入磁盘。我想安全地获得流并将其直接写入磁盘,而不是用巨大的文件填充ram。做这件事的好方法是什么?以下是我到目前为止所做的:
Stream sourceStream = SsClient.GetFile(FolderId, Helper.GetISession());
using (var targetStream = new FileStream(thisComputerPath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
{
//read from the input stream in 65000 byte chunks
const int bufferLen = 65000;
var buffer = new byte[bufferLen];
int count;
while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
{
// save to output stream
targetStream.Write(buffer, 0, count);
}
targetStream.Close();
sourceStream.Close();
}
我希望我能把我的问题解释清楚。顺便说一下,请原谅我的英语不好。
我不介意使用ram用于缓冲目的或类似的东西,我只是不希望它每次都被1-2 gb的流填充,因为如果它只有2 gb的ram,它会给客户端计算机带来困难。
您是否查看了以下帖子
如何保存流
和
向文件写入大数据流
如果对这些实现有任何疑问,请告诉我们