调用File.Exist会锁定文件吗?

时间:2009-02-17 17:21:58

标签: c# .net file-io locking

如果我尝试删除文件,但同时另一个进程正在同一文件上执行File.Exists(...),那么是否可能会锁定文件并导致我的进程失败?

3 个答案:

答案 0 :(得分:11)

不,File.Exist()仅检查有问题的文件是否位于指定路径的文件系统上。它无论如何都不会访问文件数据或标题,因此它不会锁定文件。

另外,即使打开文件也不一定会锁定它。这取决于您在打开时选择的访问参数。

答案 1 :(得分:3)

不,File.Exist不会锁定文件。不过,看看幕后发生的事情的好方法是浏览source code

下拉.Net Framework基类库的源代码,看一下幕后发生的事情。特别是,System.IO.File类有一些非常有趣的默认选择,用于文件处理,锁定,释放等。在像你这样的实例中,看到幕后发生的事情的来源可以在如何影响方面发挥重要作用。你设计你的应用程序。

根据链接:

如何使用Shared Source CLI? Shared Source CLI中有丰富的编程语言技术。广泛的受众可能会感兴趣,包括:

  • 对.NET Framework内部工作感兴趣的开发人员可以探索CLI的这种实现,以了解垃圾收集的工作原理,JIT编译和验证的处理,安全协议的实现以及框架和虚拟对象系统的组织。 / LI>
  • 使用高级编译器技术的教师和研究人员。研究项目的语言扩展,JIT优化和现代垃圾收集都有共享源CLI的基础。现代编译器课程可以基于CLI上实现的C#或JScript语言。
  • 开发自己的CLI实施的人会发现共享源CLI是ECMA标准不可或缺的指南和附件。

答案 2 :(得分:2)

这是对anu的回答 - 任何人都在做与文件类似的事情。

使用using语句访问文件非常重要。这可以确保您妥善处理对文件的引用。

using (var fs = File.OpenRead(path)) {
    // Do something
}