您好我尝试在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);
}
答案 0 :(得分:3)
您在创建File.Create
之前发出TextWriter
。
File.Create(path);
TextWriter tw = new StreamWriter(path,true);
默认情况下, File.Create
会创建一个文件并将其锁定,因此TextWriter
无法访问该文件。
此方法创建的FileStream对象的默认FileShare值为None;在原始文件句柄关闭之前,没有其他进程或代码可以访问创建的文件。
File.Create
返回一个流,因此要么使用该流写入文件(而不是将路径传递给TextWriter
),要么根本不要调用File.Create
,让StreamWriter
创建文件。