如何跳过用户NetCore 3中的文件

问题描述 投票:1回答:1

我正在尝试对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 { }
                }
            }

        }

因此,如果正在使用文件,如何跳过删除?

c# .net core
1个回答
2
投票

在删除文件之前无法检查文件是否可删除,因为在检查和删除之间会有很小的机会,另一个过程将打开文件。最好的办法是尝试将其删除并处理发生的异常。

您的try / finally应该为try / catch,但有适当的例外:

try
{
   File.Delete(f);
}
catch(IOException ex)
{
   // Probably some logging here 
}
© www.soinside.com 2019 - 2024. All rights reserved.