C# 文件被另一个进程使用
C# File being used by another process
我正在尝试写一个日志文件,但它总是显示 "File being used by another process"。这是我的代码:
//_logFile = "system.log"
if(!File.Exists(Path.Combine("logs", _logFile)))
{
File.Create(Path.Combine("logs", _logFile)).Close();
sw = File.AppendText(Path.Combine("logs", _logFile));
}
else
{
sw = File.AppendText(Path.Combine("logs", _logFile));
}
当我 运行 它时,它指向 File.Create(Path.Combine("logs", _logFile)).Close()
行并给我错误。
编辑:
我将 if(!File.Exists(_logFile))
更改为 if(!File.Exists(Path.Combine("logs", _logFile)))
但我仍然遇到相同的错误。
假设您不需要在此方法的上下文之外访问此流,我会将您的代码重构为:
var filePath = Path.Combine("logs", _logFile);
using (var sw = File.AppendText(filePath))
{
//Do whatever writing to stream I want.
sw.WriteLine(DateTime.Now.ToString() + ": test log entry");
}
这样,无论 using
块内发生什么,您都知道该文件将被关闭,以便您稍后可以再次使用它。
请注意,如果文件不存在,File.AppendText
将创建该文件,因此不需要 File.Create
。
我正在尝试写一个日志文件,但它总是显示 "File being used by another process"。这是我的代码:
//_logFile = "system.log"
if(!File.Exists(Path.Combine("logs", _logFile)))
{
File.Create(Path.Combine("logs", _logFile)).Close();
sw = File.AppendText(Path.Combine("logs", _logFile));
}
else
{
sw = File.AppendText(Path.Combine("logs", _logFile));
}
当我 运行 它时,它指向 File.Create(Path.Combine("logs", _logFile)).Close()
行并给我错误。
编辑:
我将 if(!File.Exists(_logFile))
更改为 if(!File.Exists(Path.Combine("logs", _logFile)))
但我仍然遇到相同的错误。
假设您不需要在此方法的上下文之外访问此流,我会将您的代码重构为:
var filePath = Path.Combine("logs", _logFile);
using (var sw = File.AppendText(filePath))
{
//Do whatever writing to stream I want.
sw.WriteLine(DateTime.Now.ToString() + ": test log entry");
}
这样,无论 using
块内发生什么,您都知道该文件将被关闭,以便您稍后可以再次使用它。
请注意,如果文件不存在,File.AppendText
将创建该文件,因此不需要 File.Create
。