【发布时间】:2010-12-15 00:30:10
【问题描述】:
回复:http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx
有谁知道这是否是一个特别缓慢或锁定的操作,可能会影响大型环境中的服务器性能?
【问题讨论】:
-
还要注意 File.Exists() 几乎不需要被调用。它通常用于验证未来的 IO 操作,但它不能真正做到这一点,因为文件的存在可能会在调用 Exists 和执行 IO 操作之间发生变化。通常最好只尝试正在验证的操作,看看它是否有效。显然,这方面的反例有很多,您的应用可能属于其中之一。
-
另一个使用 IO.File.Exists 的例子是在显示之前查看图像是否存在,如果不存在则显示替代方案。
-
如果您在一个目录中有很多文件或目录,我发现它很昂贵。例如,在单个目录中有大约 10,000 个文件/目录后,使用
File.Exists处理该目录中的文件/目录会非常缓慢。比目录为空时慢 10 - 100 倍。随着更多文件/目录的添加,它会呈指数级恶化。所以要注意这一点。