c# - File.Exists 方法是否获得大量资源?

标签 c# .net

那什么更好呢?要使用这样的结构:

if (File.Exist(fileName))
{
    // do something with file...
}

只是

try 
{
    // do something with file.
}
catch(Exception ex)
{
}

使用 File.Exist() 方法成本高吗?

谢谢!

最佳答案

前者存在竞争条件:另一个进程可能会在 File.Exists 返回 true 之后但在您打开它之前删除该文件。后者没有。即使您事先检查过,如果您想忽略不存在的文件,您仍然应该捕获异常。

应该是吧

if (File.Exists(fileName))
{
    try
    {
        // ...
    }
    catch (FileNotFoundException)
    { }
}

try
{
    // ...
}
catch (FileNotFoundException)
{ }

前者重复检查,如果文件在网络共享上,这可能会很慢,后者针对非异常情况引发异常(已处理),使调试复杂化。两者各有千秋。就个人而言,我通常选择第二种,但两者都可以。

关于c# - File.Exists 方法是否获得大量资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13529061/

相关文章:

C#异步: How does a thread remember its local variables?

c# - IEnumerable<SelectListItem> 错误问题

c# - 从类型集合中获取公共(public)基类的最简单方法

.net - MemoryFailPoint 无条件抛出 InsufficientMemoryException

.net - 未调用 RowStyleSelector

c# - 用于网址检查的正则表达式

c# - Ion.Sound 1.1.0 JQuery javascript 响应

.net - 在 SQL Server 中,SESSIONPROPERTY 和 @@Options 之间有什么区别?

c# - 在默认应用程序中打开文件

c# - 了解编译器优化