c#streamreader文本文件读取前/后的行
在某些特殊情况下,我需要在当前位置之前和之后使用一些行。例如c#streamreader文本文件读取前/后的行,c#,text-files,C#,Text Files,在某些特殊情况下,我需要在当前位置之前和之后使用一些行。例如 public string[] getLines(string value, int linesBefore, int linesAfter) { _streamReader = new StreamReader("file.tmp"); string[] returnValue; string line = _streamReader.ReadLine(); while (Line.instr()
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"
}
public string[]getLines(字符串值,int-linesBefore,int-linesAfter)
{
_streamReader=新的streamReader(“file.tmp”);
字符串[]返回值;
字符串行=_streamReader.ReadLine();
while(Line.instr()<0)
{
Line=_streamReader.ReadLine();
}
returnValue=读取“之前的值行”
+行//当前行
+读“值行后面”
}
最后3行是我需要的
有没有一种简单的方法可以做到这一点?如果您的文件不是太大,您可以读取整个文件并将每一行存储到
列表中,然后抓取最后三行。如果您的文件非常大,请使用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;
}
pubic string[]getLines(字符串值,int-linesBefore,int-linesAfter){
_streamReader=新的streamReader(“file.tmp”);
字符串[]返回值;
字符串行=_streamReader.ReadLine();
字符串前置行;
while(Line.instr()<0)
{
prevLine=行;
Line=_streamReader.ReadLine();
}
字符串postLine=_streamReader.ReadLine();
returnValue=prevLine+Line+postLine;
}
如果希望前后有多行,请为前置行创建一个“滚动”数组,并创建一个while循环,使用更多的ReadLine调用将后行存储在数组中。使用(StreamReader\u StreamReader=new StreamReader(“file.tmp”))
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()
};
}
{
字符串[]返回值;
字符串previousLine=null;
字符串行=_streamReader.ReadLine();
while(line.instr()<0)
{
前一行=前一行;
line=_streamReader.ReadLine();
}
字符串[]返回值=新字符串[]{
前一行,
行,,
_streamReader.ReadLine()
};
}