我的文字文件包含以下格式的内容:
0001EPP000000084906875 00000 0001
0002EPP000000084906875 00016 0002
0003EPP000000084906875
............
0001EPP000000084967647 00001 0002
0002EPP000000077676678 00016 0002
0003EPP000000084777770
我需要循环遍历所有行,找到以0001开头的行,而0002需要获得与计数相同的(0001,0002)相应的行字数,我会做进一步的计算... 为此,我做到了这一点:
string filename = string.Empty;
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] TXTFiles = dir.GetFiles("*.txt");
foreach(var file in TXTFiles)
{
filename = file.Name;
}
var reader = new StreamReader(filename);
foreach(string item in File.ReadAllLines(filename))
{
// Here I need to check the file content
}
拜托,有人可以帮忙吗?如果行内容与起始条件匹配,如何识别行内容并获取字数?
答案 0 :(得分:1)
有些事情你可以改变,可以让你到达你想去的地方。
首先,您可以摆脱StreamReader
行,因为File.ReadAllLines
是我们获取内容所需的全部内容。
其次,我们应该将处理文件的代码放在foreach (var file ...
循环中。否则,我们只处理最后一个文件。
第三,您应该用file.Name
(包括完整路径和文件名)替换file.FullName
(只是文件名)。否则,除非您正在当前目录中搜索,否则您可能会获得FileNotFoundException
。
最后,在阅读文件时,我们可以使用StartsWith
检查该行是否以您要查找的文字开头,当我们找到我们想要的行时,我们可以使用{{1}将空格字符分解为数组。然后,这只是从线上阅读你关心的部分的问题。
代码看起来像这样:
string.Split
<强>输出强>