创建然后删除文件导致IOException

Jim*_*Jim 8 .net c#

应用程序需要在目录中创建文件,在目录中执行某些操作,然后删除该文件.例如,下面的源代码:

File.Create("textfile.txt");
// Do something here
File.Delete("textfile.txt");
Run Code Online (Sandbox Code Playgroud)

如果"某事"是一个只需要很短时间的进程,File.Delete将抛出IOException(另一个进程正在使用该文件).根据另一个SO帖子:无法删除Directory.Delete(path,true)的目录,调用Thread.Sleep(0)应该允许前一个进程完成.然而,即使有

File.Create("textfile.txt");
// Do something here
Thread.Sleep(0);
File.Delete("textfile.txt");
Run Code Online (Sandbox Code Playgroud)

仍然会抛出相同的IOException.

我得到的解决方案是一个while循环,尝试重复删除文件,直到它被删除.但我想知道这是否是一个更好的解决方案.

RB.*_*RB. 21

File.Create方法将创建一个文件流,你需要正确处置.我建议使用以下代码:

using(FileStream fs = File.Create("textfile.txt"))
{
    // Do something here.
}
File.Delete("textfile.txt");
Run Code Online (Sandbox Code Playgroud)

请注意,此代码完全按照MSDN文档中的建议...


usr*_*usr 16

File.Create返回一个FileStream,它表示该文件的打开句柄.将该调用的结果包含在using-block中以确定性地关闭句柄.