C# 将内存流写入文件

Rad*_*nal 3 c# memorystream

我有一个简单的函数,它应该接收 Stream 对象并将其写入文件“result.txt”这是我的函数:

public void WriteToFile(Stream stream)
        {
            StreamReader reader = new StreamReader(stream);
            stream.Position = 0;
            FileInfo f = new FileInfo("result.txt");
            FileStream fs = f.Create();
            stream.CopyTo(fs);
            stream.Position = 0;
            var text = reader.ReadToEnd();
            Console.WriteLine(text);
        }
Run Code Online (Sandbox Code Playgroud)

但我在写入文件时遇到问题。结果 - 文件为空。但是,我在控制台中收到这行代码的输出:

var text = reader.ReadToEnd();
Console.WriteLine(text);
Run Code Online (Sandbox Code Playgroud)

在控制台中我得到简单而简短的 json 输出

{"startAt":0,"maxResults":0,"total":472,"issues":[]}
Run Code Online (Sandbox Code Playgroud)

此函数可以与其他较大的流配合使用,但这个 52 字节流只是不想写入文件。我究竟做错了什么?

小智 5

你不需要任何 StreamReader,只需这样做:

public void WriteToFile(Stream stream)
{
        stream.Seek(0, SeekOrigin.Begin);
       
        using(var fs = new FileStream("/path/to/file", FileMode.OpenOrCreate))
        {
             stream.CopyTo(fs);
        }
}

//var memoryStream...
//...

WriteFoFile(memoryStream);
Run Code Online (Sandbox Code Playgroud)