c# - MemoryStream 没有向文件写入任何内容
问题描述
我的问题是将一些关于乘客的数据写入到文件中MemoryStream
,然后将其复制到文件中。我需要用两种不同的方法来实现它。在我需要使用的方法中Stream
,然后在Main
我使用的函数中MemoryStream
。所以我写了这段代码:
public static void WriteToStream(Stream stream)
{
Random rnd = new();
StreamWriter sw = new(stream);
for (int i = 0; i < 100; i++)
{
sw.WriteLine(i);
sw.WriteLine($"Passanger{i}");
sw.WriteLine(rnd.Next(0, 2) == 1); //true or false
}
}
public static void CopyFromStream(Stream stream, string filename)
{
StreamReader sr = new(stream);
StreamWriter sw = new(File.Open(filename, FileMode.OpenOrCreate));
while (sr.BaseStream.Position < sr.BaseStream.Length)
{
sw.WriteLine(sr.ReadLine());
}
sw.Close();
}
主功能:
MemoryStream ms = new();
StreamService.WriteToStream(ms);
StreamService.CopyFromStream(ms, "database.dat");
第一种方法是将有关乘客的一些数据写入流中,另一种方法是读取它并将其写入文件。但是当我检查我的文件时,它是空的。可能是什么问题呢?
解决方案
写完之后就MemoryStream
到Position
最后了。您需要将位置设置回开头:
WriteToStream(ms);
ms.Seek(0, SeekOrigin.Begin); // < here
CopyFromStream(ms, "database.dat");
此外,Stream
类已经有CopyTo
方法,因此无需重新发明它(除非您使用的是一些非常旧的框架版本,但它不可用?):
WriteToStream(ms);
ms.Seek(0, SeekOrigin.Begin); // < here
using (var fs = File.Open("database.dat", FileMode.OpenOrCreate)) {
ms.CopyTo(fs);
}
推荐阅读
- javascript - 这个错误是由使用 React 代码拆分和组件继承引起的吗?
- python - 命令提示符中的 Python?
- javascript - Vuejs - 如何提高 Vuejs 的安全性
- arrays - 为什么在 Perl 中将列表引用分配给数组变量?
- google-coral - Coral SOM 数据表 V1.8 问题
- react-native - 我需要选择一个日期,并根据日期需要使用 React Native 显示一个包含当天相关数据的表格
- python - 按名称获取角色(discord.py 重写)
- python - Python 上的 Euler 3 项目
- assembly - 我从汇编代码中的错误以及如何打印结果开始
- sas - SAS dd-mm-yyyy 到 mmm-yy 格式,如 excel