0

我有一个 wcf 服务,可以向我发送流(通常是大流)。作为客户端应用程序,我的角色是通过 WCF 获取流并将其保存到磁盘。我已经编写了一些代码,但似乎首先将流放入 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,它会给客户端计算机带来困难.

4

1 回答 1

0

你检查过以下帖子吗

如何保存流

将大流写入文件

如果对这些实现有任何疑问,请告诉我们。

于 2013-05-05T12:34:01.337 回答