通过指定起点和终点从文件中读取

时间:2014-02-21 11:44:31

标签: c# streamreader

我想从C#中的输入文件中读取。以下是我的代码。

public string ReadFromNewEntityFile()
    {
        string template=null;
        StringBuilder s = new StringBuilder();
        //char[] sourcesystemhost=null;
        string inputFileName = ConfigurationManager.AppSettings["inputNewEntityFilePath"].ToString();
        System.IO.StreamReader myFile;
        try
        {
            myFile = new System.IO.StreamReader(inputFileName);
            myFile.ReadLine();
            while ((template = myFile.ReadLine()) != "[[END SourceSystemHost]]")
            {
                s.AppendLine(template);
            }
        }
        catch (Exception ex)
        {
            log.Error("In Filehandler class :" + ex.Message);
            throw new Exception("Input file not read" + ex.Message);
        }
        return template;
    }

问题是要指定读取内容的起点和终点。在这里,我只能指定终点。我如何指定起点?

请帮忙

2 个答案:

答案 0 :(得分:4)

假设您的开始/结束“点”实际上是线条,您基本上需要从头开始阅读并跳过线条直到您到达正确的线条。这是使用File.ReadLines

执行此操作的简便方法
var lines = File.ReadLines(inputFileName)
                .SkipWhile(line => line != "[[START SourceSystemHost]]")
                .Skip(1) // Skip the intro line
                .TakeWhile(line => line != "[[END SourceSystemHost]]");

答案 1 :(得分:1)

您可以使用File.ReadLines,它可以做同样但更具可读性。然后使用LINQ查找起点和终点:

var range = File.ReadLines(inputFileName)
   .SkipWhile(l => !l.TrimStart().StartsWith("[[Start SourceSystemHost]]"))
   .TakeWhile(l => !l.TrimStart().StartsWith("[[END SourceSystemHost]]"));

string result = string.Join(Environment.NewLine, range);