首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何跳过user NetCore 3中的文件

如何跳过user NetCore 3中的文件
EN

Stack Overflow用户
提问于 2020-05-28 00:49:35
回答 1查看 28关注 0票数 1

我正在尝试编写一个windows服务程序,它可以自动从特定的文件夹中删除文件。但我遇到错误“无法访问文件,另一个进程/程序正在使用文件”

我尝试执行以下操作,但仍然出现相同的错误。

代码语言:javascript
复制
 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 { }
                }
            }

        }

那么如何跳过删除正在使用的文件呢?

EN

回答 1

Stack Overflow用户

发布于 2020-05-28 01:07:43

在删除之前检查文件是否可删除是没有意义的,因为在检查和删除之间会有一个很小的机会窗口,在这个窗口中另一个进程将打开该文件。最好的办法是尝试删除它,并在发生异常时处理它。

您的try/finally应该是try/catch,并带有适当的异常:

代码语言:javascript
复制
try
{
   File.Delete(f);
}
catch(IOException ex)
{
   // Probably some logging here 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62048459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档