WiX*_*XeY 0 c# file-io locking
我在Microsoft Visual Studio 2012中使用C#,我正在处理以下代码:
string source = "d:\\source.txt";
string newFile = "d:\\newFile.txt";
if(!File.Exists(newFile))
{
File.Create(newFile);
string content = File.ReadAllText(source);
File.AppendAllText(newFile,content);
}
Run Code Online (Sandbox Code Playgroud)
此代码成功创建了文件,但在编译时File.AppendAllText(newFile,content)会生成错误:
进程无法访问文件"d:\newFile.txt",因为它正被另一个进程使用.
为什么会这样?
该File.Create方法返回一个FileStream对象.这使文件保持打开状态以进行写入.在该对象关闭之前,无法写入该文件.解决此问题的最佳方法是简单地关闭返回的文件
File.Create(newFile).Close();
Run Code Online (Sandbox Code Playgroud)
该代码实质上是将现有文件的内容复制到新文件中.已经有一个API可以做到这一点:File.Copy.您的代码可以简化为以下内容
try {
File.Copy(source, newFile);
} catch (Exception) {
// File already exists or write can't occur
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |