创建一个文本文件并在C#中写入

时间:2015-01-23 16:24:19

标签: c# file-io

您好我尝试在C#中创建并编写一个文本文件但我收到此错误。

另一个进程正在使用该进程'D:\ SampleFolder \ Sample.txt'无法访问该文件。

public void WriteToLog(string ClassName, string Message)
{
    string path = @"D:\SampleFolder\" + ClassName + ".txt";

    if (!File.Exists(path))
    {
        File.Create(path);
        TextWriter tw = new StreamWriter(path,true);
        tw.WriteLine(DateTime.Now.ToString() + " " + "Class:" + " " + ClassName + " " + "Message:" + Message);
        tw.Close();
    }

    else if (File.Exists(path))
    {
        TextWriter tw = new StreamWriter(path, true);
        tw.WriteLine(DateTime.Now.ToString() + " " + "Class:" + " " + ClassName + " " + "Message:" + Message);
        tw.Close();
    }
}

..
..
try
{

}
catch (Exception ex)
{       
    WriteToLog(this.GetType().Name, ex.Message);
}

1 个答案:

答案 0 :(得分:3)

您在创建File.Create之前发出TextWriter

File.Create(path);
TextWriter tw = new StreamWriter(path,true);
默认情况下,

File.Create会创建一个文件并将其锁定,因此TextWriter无法访问该文件。

来自documentation

  

此方法创建的FileStream对象的默认FileShare值为None;在原始文件句柄关闭之前,没有其他进程或代码可以访问创建的文件。

File.Create返回一个流,因此要么使用该流写入文件(而不是将路径传递给TextWriter),要么根本不要调用File.Create ,让StreamWriter创建文件。