我需要阅读 FixedLenght 文件,编辑其中的一些数据,然后将该文件保存到某个位置。这个应该做所有这些的小应用程序应该每 2 小时运行一次。
这是文件的示例:
14000 美国 A111 78900
14000 美国 A222 78900
14000 美国 A222 78900
我需要查找 A111 和 A222 之类的数据,并将所有 A111 替换为例如 A555。我试过使用 TextFieldParser 但没有任何运气......这是我的代码。我能够得到数组的元素,但我不知道下一步该怎么做......
using (TextFieldParser parser =
FileSystem.OpenTextFieldParser(sourceFile))
{
parser.TextFieldType = FieldType.FixedWidth;
parser.FieldWidths = new int[] { 6, 3, 5, 5 };
while (!parser.EndOfData)
{
try
{
string[] fields = parser.ReadFields();
foreach (var f in fields)
{
Console.WriteLine(f);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
这是 Berkouz 的解决方案,但仍然存在问题,当保存到文件时,数组的项目不会在输出中替换。编码:
string[] rows = File.ReadAllLines(sourceFile);
foreach (var row in rows)
{
string[] elements = row.Split(' ');
for (int i = 0; i < elements.Length; i++)
{
if (elements.GetValue(i).ToString() == "A111") {
elements.SetValue("A555", i);
}
}
}
var destFile = targetPath.FullName + "\\" + "output.txt";
File.WriteAllLines(destFile, rows);