[英]c# streamreader textfiles read line before/after
在某些特殊情况下,我需要在当前位置之前和之后添加一些行。 例如
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"
}
最后三行是我需要的。
是否有捷径可寻?
如果文件不是太大,则可以读取整个文件并将每行存储到List<String>
,然后获取最后三行。 如果文件确实很大,请使用Queue
类-将行压入队列并调用TrimToSize使其保持在所需的行数。 当然,要获得“之后”,您必须再读一行。
您可以在循环中保留前一行的副本,然后在循环后使用附加的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循环,以使用更多ReadLine调用将postLine存储在数组中。
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()
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.