在某些特殊情况下,我需要在当前位置之前和之后使用一些线条。 E.g。
public string[] getLines(string value, int linesBefore, int linesAfter)
{
_streamReader = new StreamReader("file.tmp");
string[] returnValue;
string line = _streamReader.ReadLine();
while (Line.instr() < 0)
{
Line = _streamReader.ReadLine();
}
returnValue = READ "value linesBefore"
+ Line // Current Line
+ READ "value linesAfter"
}
最后3行是我需要的。
有一种简单的方法吗?
答案 0 :(得分:0)
如果您的文件不是太大,您可以只读取整个文件并将每一行存储到List<String>
中,然后抓取最后三行。如果您的文件非常大,请使用Queue
类 - 将行推入队列并调用TrimToSize以使其保持在所需的行数。当然,要获得“后续行”,你必须再读一行。
答案 1 :(得分:0)
您可以在循环中保留前一行的副本,然后在循环后使用附加的ReadLine()。
pubic string[] getLines(string value, int linesBefore, int linesAfter){
_streamReader = new StreamReader("file.tmp");
string[] returnValue;
string Line = _streamReader.ReadLine();
string prevLine;
while (Line.instr() < 0)
{
prevLine = Line;
Line = _streamReader.ReadLine();
}
string postLine = _streamReader.ReadLine();
returnValue = prevLine + Line + postLine;
}
如果你想要在之前/之后有多行,请为prevLines创建一个“滚动”数组,并使用while循环将postLines存储在使用更多ReadLine调用的数组中。
答案 2 :(得分:0)
using (StreamReader _streamReader = new StreamReader("file.tmp"))
{
string[] returnValue;
string previousLine = null;
string line = _streamReader.ReadLine();
while (line.instr() < 0)
{
previousLine = line;
line = _streamReader.ReadLine();
}
string[] returnValue = new string[] {
previousLine,
line,
_streamReader.ReadLine()
};
}