我正在逐行读取一个文件,我希望能够通过调用方法Rewind()重新开始读取.

我如何操纵我的System.IO.StreamReader和/或其基础System.IO.FileStream来重新开始读取文件?

我想出了一个聪明的主意,用FileStream.Seek(long, SeekOffset)在文件中移动,但它对封闭的System.IO.StreamReader没有影响.我可以重新分配流和读者引用,但我希望有更好的方法.

推荐答案

你需要像以前一样在流中搜索,然后在StreamReader上拨打DiscardBufferedData.文件here:

编辑:添加代码示例:

Stream s = new MemoryStream();
StreamReader sr = new StreamReader(s);
// later... after we read stuff
s.Position = 0;
sr.DiscardBufferedData();        // reader now reading from position 0

.net相关问答推荐

找不到包Microsoft.VisualStudio.Azure.Containers.Tools.Targets

PowerShell 5.1和7在使用证书时的区别

.net Maui 在单击按钮时访问 CollectionView 中的数据项

如何在 C# 中自动删除临时文件?

如何调试 .NET 运行时中的内部错误?

DbContext 丢弃更改而不释放

使用 .NET 在 Windows 中创建弹出式 toastr 通知

C# 是否(或将)包含用于副作用验证的功能?

为什么 .NET 中没有可序列化 XML 的字典?

我什么时候应该在 C# 中使用使用块?

使用只读属性或方法?

将双精度转换为带有 N 个小数的字符串,点作为小数分隔符,并且没有千位分隔符

C# 方法可以定义为采用的最大参数数是多少?

是否有 TLS 1.2 的 .NET 实现?

无法将文件 *.mdf 作为数据库附加

X509Certificate 构造函数异常

场与财产.性能优化

如何比较泛型类型的值?

MailMessage,Sender 和 From 属性的区别

作者主签名的时间戳发现了一个建链问题:UntrustedRoot: self-signed certificate in certificate chain