我正在编写一个需要创建CSV文件的C#应用程序。
问题是在发出File.CreateText({file path})之后,我无法立即写入它。如果文件已经存在,我可以写没有问题。这是代码:
if (!File.Exists(file_name))
{
File.CreateText(file_name);
File.WriteAllText(file_name, String.Format("Old Name,Short Name{0}", this.old_name_txt.Text, this.new_name_txt.Text, Environment.NewLine));
}
else
{
File.AppendAllText(file_name, String.Format("{0},{1}{2}", this.old_name_txt.Text, this.new_name_txt.Text, Environment.NewLine));
}
创建文件后,我也试过" File.AppendAllText ..."
它产生的错误表明它无法写入,因为该文件正由另一个进程使用。
答案 0 :(得分:1)
File.CreateText
将创建一个文本文件并打开该文件。然后它返回一个StreamWriter
,您可以使用它来访问该创建的文件。因为您已经打开了这样的文件,所以在尝试再次打开该文件时会出错。
在阅读File.CreateText
的{{3}}时,请务必查看返回值,以了解该功能的用途。
请同时阅读File.AppendAllText
的{{3}},然后相应地更改您的代码。
这是文档中最重要的部分:
AppendAllText(String,String)
的描述强>
打开文件,将指定的字符串附加到文件,然后关闭该文件。如果文件不存在,则此方法创建文件,将指定的字符串写入文件,然后关闭文件。
你现在应该能够自己解决问题。