尝试找到一种阅读文本文件的好方法,找到某个短语的最后一个实例,然后从该点开始读取文件。
示例简化
sometext1...
sometext2...
[new]
sometext3...
[new]
sometext4...
sometext5...
[new]
sometext6...
sometext7...
想要我想要的回归是最后写的部分
[new]
sometext6...
sometext7...
我可以想办法做到这一点,但我确信有一种非常有效的方法。 猜测必须找到“[new]”的最后一个索引并从那里读取。
答案 0 :(得分:3)
var text = File.ReadAllText(theFile);
var tail = text.SubString(text.LastIndexOf("[New]"));
答案 1 :(得分:3)
假设:
然后我会做以下事情。改变前三个假设,它变得更棘手,改变第四个,我会变得懒惰,只是加载整个东西:
using(TextReader tr = new StreamReader(filePath))
{
StringBuilder sb = new StringBuilder();
for(string line = tr.ReadLine(); line != null; line = tr.ReadLine())
if(line == "[new]")
sb = new StringBuilder("[new]");//flush last chunk read.
else
sb.Append('\n').Append(line);
return sb.ToString();
}
答案 2 :(得分:1)
您可以打开文件流,将其包装到TextReader中,然后在FileStream实例中保存Position属性的值。它允许您保存[新]令牌的位置。