我有一个包含块(标题和正文)的文件。我需要分开这些街区。标题是'他=',身体可以是任何东西,例如'巨石很重'。所以典型的文件看起来像
他=阳光灿烂的日子=巨石是沉重的=大家好吗
我正在使用StreamReader的Read方法逐个字符地读取。
在程序中,使用if语句检查h e和=以确定其标头。但考虑一下这个词。我需要一种方法将文件指针移回h,因为它不是标题。
有没有办法在StreamReader中移动文件指针?上面的标题正文示例只是一个玩具示例供解释。
答案 0 :(得分:0)
由于StreamReader仅向前,因此您无法向后退。然而,一切都不会丢失。一种常见的策略是使用 buffer 变量并检查它。这是一些粗略的代码:
var buffer = new StringBuilder();
while(streamReader.Peek() >= 0)
{
//Add latest character to buffer
buffer.append(streamReader.Read());
//Check the three rightmost characters in the buffer for the occurance of he=
if(buffer.Length >= 3 && buffer.ToString().Substr(buffer.Length-3, 3) == "he=")
{
//We have found new header. Now we trim the header from the rest of the buffer to get the body
var newBody = buffer.ToString().Substr(0,buffer.Length-3);
//I'm assuming you'll be adding the body somewhere
bodies.Add(newBody);
//Now we clear the buffer
buffer.Clear();
}
}
//What's left in the buffer is also a body
bodies.Add(buffer.ToString());