Avatar ·

如何在C#中将流(Stream)保存到文件?正确的方法和示例

大家好!我是一名C#初学者开发者,遇到了这样一个任务:我有一个类型为`Stream`的对象(例如,从HTTP请求或内存中获取),需要将其所有内容保存到磁盘上的文件中。 起初,我尝试了最简单的方法:使用`Read()`将流读入字节数组,然后通过`File.WriteAllBytes`写入。这是我的代码:
public void SaveStreamToFile(Stream inputStream, string filePath)
{
    byte[] buffer = new byte[inputStream.Length];
    inputStream.Read(buffer, 0, buffer.Length);
    File.WriteAllBytes(filePath, buffer);
}
但如果流不支持定位(例如网络流),这段代码会报错。此外,我了解到大文件可能会存在内存问题。 请问,如何正确且高效地将任意流(事先不知道其长度)保存到文件?有哪些最佳实践?写入后是否需要关闭流?提前感谢!