我想做的是记住我在输入流中的位置,然后再回到那里。 在 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/