C# 通过指定起点和终点在中读取文件

C# 通过指定起点和终点在中读取文件,c#,streamreader,C#,Streamreader,我想从C#中的输入文件中读取数据。下面是我的代码 public string ReadFromNewEntityFile() { string template=null; StringBuilder s = new StringBuilder(); //char[] sourcesystemhost=null; string inputFileName = ConfigurationManager.AppSettings[

我想从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;
    }
问题是您希望指定读取内容的起点和终点。这里我只能指定终点。如何指定起点

请帮助

假设您的开始/结束“点”实际上是行,您基本上需要从头开始阅读并跳过这些行,直到找到正确的一行。以下是一种简单的方法:

假设你的开始/结束“点”实际上是直线,你基本上需要从头开始阅读并跳过直线,直到你到达正确的一个。以下是一种简单的方法:


您可以使用
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);

您可以使用
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);

是否以字节、行或字符指定起始点?还是通过警戒线?这很重要lot@MarcGravell哇!很不错的。我正要发布一个
Seek
示例。。我真的需要更好地要求澄清。请不要在标题中包含语言标签,除非没有它就没有意义。标记就是为了达到这个目的。根据你需要处理文件的多少以及文件的大小,仅仅使用
stringfilecontents=file.ReadAllText(fileName)就足够了然后处理文件内容?起始点是字符串是以字节、行或字符为单位指定的起始点吗?还是通过警戒线?这很重要lot@MarcGravell哇!很不错的。我正要发布一个
Seek
示例。。我真的需要更好地要求澄清。请不要在标题中包含语言标签,除非没有它就没有意义。标记就是为了达到这个目的。根据你需要处理文件的多少以及文件的大小,仅仅使用
stringfilecontents=file.ReadAllText(fileName)就足够了
然后处理文件的内容?起点是stringReadlines不是System.IO.StreamReaderI必须使用的识别方法。IO@user2124167:或使用
System.IO.File.ReadLines
,当然-但通常最好对文件中使用的每个名称空间使用
指令。Readlines不是System.IO的标识方法。StreamReaderI必须使用System。IO@user2124167:或使用
System.IO.File.ReadLines
,当然-但是对于文件中使用的每个名称空间,通常最好使用
using
指令。