我正在尝试对Windows服务进行编程,该服务会自动从特定文件夹中删除文件。但是我遇到了一个错误“无法访问文件,文件被另一个进程/程序使用”
我尝试执行以下操作,但仍然是相同的错误。
string[] files = Directory.GetFiles(@"C:\Users\ASIM\AppData\Local\Temp");
// string[] directories = Directory.GetDirectories(@"C:\Users\ASIM\AppData\Local\Temp", "p*", SearchOption.TopDirectoryOnly);
if (files != null || files.Length != 0)
{
{
foreach (string f in files)
{
try
{
File.Delete(f);
}
finally { }
}
}
}
因此,如果正在使用文件,如何跳过删除?
在删除文件之前无法检查文件是否可删除,因为在检查和删除之间会有很小的机会,另一个过程将打开文件。最好的办法是尝试将其删除并处理发生的异常。
您的try / finally应该为try / catch,但有适当的例外:
try
{
File.Delete(f);
}
catch(IOException ex)
{
// Probably some logging here
}