C# 将内存流写入文件

C# write memorystream to file

我有一个简单的函数,它应该接收 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);
        }

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

var text = reader.ReadToEnd();
Console.WriteLine(text);

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

{"startAt":0,"maxResults":0,"total":472,"issues":[]}

这个函数可以很好地处理其他更大的流,但是这个 52 字节的流只是不想写入文件。我做错了什么?

您不需要任何 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);

你可以这样使用:

public void WriteToFile(Stream stream)
{
    var writer = new System.IO.StreamWriter("result.txt");
    StreamReader reader = new StreamReader(stream);
    while ((line = reader.ReadLine()) != null)
    {
        writer.WriteLine(line);          
    }
 
    var text = reader.ReadToEnd();

    writer.Close();
    reader.Close();

    Console.WriteLine(text);

}