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() }; }