从Wcf流服务直接到磁盘

时间:2013-05-05 11:45:22

标签: c# io stream

我有一个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。

1 个答案:

答案 0 :(得分:0)

您是否检查了以下帖子

How to Save a Stream

Writing large stream to a file

请告知我们对这些实施的任何疑问。