如何以块形式读取文本文件以返回特定行
本文关键字:返回 文件 取文本 读取 | 更新日期: 2023-09-27 18:03:59
我需要能够逐行读取文本文件,并在以特定文本开始时获取行内容,但它可能并不总是在那里,这会给我null返回并影响我的datagridview。
我想做一个方法,将读取数据块,当它看到第一行(源:总是在那里)和读取其他行,如果这行不存在,然后设置变量关联到它为" "。
例如文本文件为
来源:C: '
系统:1
MRU时间:12/12/2013
来源:C: '
系统:2
MRU时间:13/12/2013
来源:C: '
MRU时间:12/10/2013
//notice no MRU
下面是我用来获取行的代码,如果它包含字符串:
String line = file.ReadLine();
if (line.StartsWith("source"))
{
richTextBox1.AppendText((line) + Environment.NewLine);
}
if (line.Contains("MRU"))
{
richTextBox1.AppendText((line) + Environment.NewLine);
}
if (line.Contains("MRU time"))
{
richTextBox1.AppendText((line) + Environment.NewLine);
}
这是一个你所需要的控制台应用程序。根据你的需要修改一下就可以了。你的主要问题是你没有空头支票。这也被封装在更小的函数中,所以它有点干净(至少对我来说)
static void Main(string[] args)
{
ReadFile();
}
private static void ReadFile()
{
StreamReader SR = new StreamReader(@"C:'Users'bharrison'Desktop'test.txt");
Console.WriteLine("Reading file");
while (!SR.EndOfStream)
{
string ReturnedValue = AnalyzeString(SR.ReadLine());
Console.WriteLine(ReturnedValue);
}
Console.ReadLine();
}
private static string AnalyzeString(string line)
{
string TempLine = line;
if (TempLine != null && TempLine != "")
{
if (TempLine.Contains("source"))
{
return TempLine;
}
if (TempLine.Contains("MRU"))
{
return TempLine;
}
if (TempLine.Contains("MRU Time"))
{
return TempLine;
}
}
else
{
return " ";
}
return " ";
}