C#StreamReader标记问题

Str*_*usa 3 .net c# streamreader

我想要做的是记住我在输入流中的位置,然后再回到那里.在使用mark()和reset()的java中非常简单,但我不知道如何在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;
}
Run Code Online (Sandbox Code Playgroud)

Llo*_*oyd 5

的确,我不知道.但是你可以使用类似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();
}
Run Code Online (Sandbox Code Playgroud)

基于词典的另一个想法:

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();
}
Run Code Online (Sandbox Code Playgroud)