基本上,如果不存在,我想创建一个文件,然后向其写入消息。
if (!File.Exists(filePath + fileName))
File.Create(filePath + fileName);
StreamWriter sr = new StreamWriter(filePath + fileName,false);
如何处理这个错误?
进程无法访问文件"c:\blablah",因为另一个进程正在使用该文件。
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))
{
}
}
为什么不直接使用接受文件名的StreamWriter
构造函数?
StreamWriter sr = new StreamWriter(filePath + fileName);
来自MSDN:
路径参数可以是文件名,包括通用命名约定(UNC)共享上的文件如果文件存在,则覆盖该文件;否则,将创建一个新文件
非常小的一点,但在连接文件名和文件夹路径时可以考虑使用Path.Combine
。
使用单一方法创建和打开文件来简化代码:
using (FileStream fs = File.OpenWrite(path))
{
Byte[] info = new UTF8Encoding(true)
.GetBytes("This is to test the OpenWrite method.");
fs.Write(info, 0, info.Length);
}
MSDN:(File.OpenWrite方法)
打开现有文件或创建新文件进行写入。