我想从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;
}
问题是要指定读取内容的起点和终点。在这里,我只能指定终点。我如何指定起点?
请帮忙
答案 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);