无法在csv文件中逐行写入值列表

hpcdzsge  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(159)

这里我正在逐行阅读一个csv文件(更新和添加一些值)并转换成一个列表。当再次尝试从列表中写入csv文件时,我无法逐行写入它。
实际格式:
预期格式:
下面是我的代码:

using (var reader = new StreamReader(@"D:FileWatcher/File_A.csv"))
{  
    List<string> fulllist = File.ReadAllLines(@"D:FileWatcher/File_A.csv").ToList();
    foreach(var item in fulllist)
    {
        var line = reader.ReadLine();
        var values = line.Split(',').ToList();
        var Col1Value = values[0].Substring(8,2);
        var Col0Value = values[0].Substring(0,7);

        values.RemoveAt(0);

        values.Insert(0, Col1Value);
        values.Insert(0, Col0Value);
        
        string combinedString = string.Join(",", values);

        var PathforFileB = @"D:FileWatcher/Result/File_B.csv";

        File.WriteAllText(PathforFileB, combinedString);
    }
}
vwoqyblh

vwoqyblh1#

原始代码的主要问题是在每次循环迭代开始时都重新打开文件。将File.WriteAllText()更改为File.AppendAllText()并将换行符作为字符串的一部分可以提供很大帮助。但即使这样,它的效率也比实际需要的要低得多,而且更加复杂。

var data = File.ReadLines(@"D:\FileWatcher\File_A.csv").
    Select(line => line.Split(',')).
    Select(line => $"{line[0].Substring(8,2)}, {line[0].Substring(0, 7)}, {string.Join(",", line.Skip(1))}");

File.WriteAllLines(@"D:FileWatcher\Result\File_B.csv", data);

相关问题