使用StreamWriter时,进程无法访问该文件

6 c# file

基本上我想创建一个文件,如果不存在然后写入消息.

if (!File.Exists(filePath + fileName))
    File.Create(filePath + fileName);
StreamWriter sr = new StreamWriter(filePath + fileName,false);
Run Code Online (Sandbox Code Playgroud)

如何处理这个错误?

该进程无法访问文件'c:\ blahblah',因为它正由另一个进程使用.

Mat*_*zer 17

File.Create打开一个FileStream(http://msdn.microsoft.com/en-us/library/d62kzs03.aspx).

由于您没有处置它,文件将保持锁定状态,并且由于这种情况,如果从其他句柄(即其他句柄FileStream或整体StreamWriter)执行,则后续对文件的访问将失败.

此代码演示了如何使用以下IDisposable对象FileStream:

if (!File.Exists(filePath + fileName))
{
    File.Create(filePath + fileName).Dispose();

    using(StreamWriter sr = new StreamWriter(filePath + fileName,false))
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么要烦扰File.Create呢?只需将文件的路径传递给StreamWriter的构造函数,并避免创建不使用的额外对象. (2认同)