繁体   English   中英

C#StreamReader文本文件读取之前/之后的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM