C# StreamReader 标记问题

标签 c# .net streamreader

我想做的是记住我在输入流中的位置,然后再回到那里。 在 java 中使用 mark() 和 reset() 非常简单,但我不知道如何在 c# 中实现这一点。没有这样的方法。

例如

public int peek() 
{
    try 
    {
        file.x; //in java file.mark(1)
        int tmp = file.read();
        file.+ //in java file.reset();
        return tmp;
    } 
    catch (IOException ex) {} 
    return 0;
}

最佳答案

据我所知确实没有。但是,您可以使用 Stack 之类的东西,然后简单地关闭它的 Push() 和 Pop() 来按顺序上下标记:

FileStream file = new FileStream(...);

try {
  Stack<long> markers = new Stack<long>();

  markers.Push(file.Position);

  file.Read(....);

  file.Seek(markers.Pop(),SeekOrigin.Begin);
} finally {
  file.Close();
}

另一个基于字典的想法:

FileStream file = new FileStream(...);

try {
  Dictionary<string,long> markers = new Dictionary<string,long>();

  markers.Add("thebeginning",file.Position);

  file.Read(....);

  file.Seek(markers["thebeginning"],SeekOrigin.Begin);
} finally {
  file.Close();
}

关于C# StreamReader 标记问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219152/

相关文章:

c# - 是否可以从第 3 方应用程序执行对 Azure App Insight 的查询

c# - 在 XNA 中重用游戏对象是否有意义?

.net - 为 64 位窗口操作系统构建时针对 x86 与 AnyCPU

c# - "new System.Timers.ElapsedEventHandler(DoStuff)"调用无效

c# - 如何使用列表框将文本文件字符串发送到文本框?

c# - 首先从 EF 6.1 代码生成 SQL View

.net - 如何从服务本身内部获取Windows服务的名称

c# - 将 StreamReader(String) 转换为与 UWP API 兼容?

c# - 将文本框中的数据写入文本文件

c# - Net Core 3.1 API的Swagger UI非常慢