您好我正在尝试用C#创建一个文件并写一些文本但是我收到以下错误:
进程无法访问文件C:\ Users \ W7 \ Documents \ Visual Studio 2010 \ Projects \ ConsoleApplication2 \ students.txt因为它正在 由另一个进程使用
public void writeFile() {
string name = @"C:\Users\W7\Documents\Visual Studio 2010\Projects\ConsoleApplication2\students.txt";
if (!File.Exists(name))
{
File.Create(name);
StreamWriter tw = new StreamWriter(name);
tw.WriteLine("The very first line!");
tw.Close();
}
}
答案 0 :(得分:5)
File.Create
为您提供流,如果您使用相同的文件,则需要关闭它。
此处您不需要使用File.Create
,StreamWriter
会为您创建文件
if (!File.Exists(name))
{
//File.Create(name);
using(StreamWriter tw = new StreamWriter(name))
{
tw.WriteLine("The very first line!");
}
}
如果您使用this构造函数,则可以通过传递Boolean
值来控制追加或覆盖,下面将覆盖该文件。 (如果要覆盖文件,请删除File.Exists
条件,不需要检查)
using(StreamWriter tw = new StreamWriter(name, false))
{
tw.WriteLine("The very first line!");
}
答案 1 :(得分:0)
您的代码失败的原因是File.Create
打开FileStream
,StreamWriter
在File.Create
尝试执行完全相同的操作之前未关闭。幸运的是,StreamWriter
行完全没必要,因为创建if (!File.Exists(name))
{
File.WriteAllText(name, "The very first line!" + Environment.NewLine);
}
会为您做到这一点。
话虽如此,有一种更简单的方法可以做到这一点:
File.WriteAllText(name, "The very first line!" + Environment.NewLine);
基于对@ Damith的回答的评论,你只需要这一行:
//assuming file does exist
File.AppendAllText(name, textToAppend);
创建新文件,将指定的字符串写入文件,然后关闭该文件。如果目标文件已存在,则会被覆盖
如需追加,请使用:
{{1}}