假设我有一个csv文件,其中包含一个数据列表,看起来像这样:
"1111", "-2222", "3333"
"-4444", "5555", "-6666"
在弄乱数据后,我把它们变成了负数/正数,并返回到字符串中
"-1111", "2222", "-3333"
"4444", "-5555", "6666"
我想用这两组数据写一个新的csv文件,新数据在原始数据的下面
"1111", "-2222", "3333"
"-4444", "5555", "-6666"
"-1111", "2222", "-3333"
"4444", "-5555", "6666"
我还是C#的新手,在编写逻辑代码方面我真的不是最聪明的。我试着用数组列表来做:
var arrList = new ArrayList();
foreach (string line in File.ReadLines(currFile))
{
string newLine = line;
writer.WriteLine(line);
//I'm gonna spare you the trouble to read through my terrible lines of codes to mess with the data, newLine is the string where I store the altered data
newLine = num;
arrList.Add(newLine);
if (lineCount == currFile.Length-1)
{
writer.WriteLine("/n");
foreach (var element in arrList)
{
writer.WriteLine(element);
}
}
lineCount = lineCount + 1;
}
但是新的数据并没有被写入。
我能不能检测到它是原始数据的结尾,以便我可以开始写新的数据?我用lineCount == currFile.Length-1
写错了吗?有没有更好的方法来实现这一点?
先谢谢你。
2条答案
按热度按时间jv4diomz1#
接下来要写的部分需要在你原来的循环之外。假设
writer
是你要写新文件的地方:roejwanj2#
CSV文件只是文本文件。CSV指的是它们的内容-它们包含逗号分隔的值。您可以向它们添加行,就像您将它们添加到任何文本文件一样。
追加文本文件
一种方法是使用Fille.AppendAllLines将行附加到现有文件的末尾:
在内部,
AppendLines
使用在Append模式下打开的StreamWriter
。您可以在代码中执行相同的操作,将行直接写入文件,而不是将所有行存储在内存中:您的代码将不得不生成每一行字符串,并确保每一行都是有效的,每行中具有相同数量的字段,并正确引用包含逗号的任何字段。
使用CSV库
你可以使用像CsvHelper这样的库来从你的应用程序的数据中生成字符串,注意正确地引用和分隔值。CsvHelper也可以追加到现有的文件中。Appending to an Existing File示例展示了如何做到这一点。
假设你有一个Foo唱片公司的名单
您可以轻松地将它们追加到现有文件中
您可以在配置中指定不同的分隔符、引用规则、日期和数字格式。