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