用C#创建文件

时间:2013-11-27 16:34:18

标签: c#

您好我正在尝试用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();
            }   
        }

2 个答案:

答案 0 :(得分:5)

File.Create为您提供流,如果您使用相同的文件,则需要关闭它。

此处您不需要使用File.CreateStreamWriter会为您创建文件

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打开FileStreamStreamWriterFile.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);

引用MSDN File.WriteAllText

  

创建新文件,将指定的字符串写入文件,然后关闭该文件。如果目标文件已存在,则会被覆盖

如需追加,请使用:

{{1}}

MSDN File.AppendAllText