如何找出 C# / .NET 中是不是存在文件?

Posted

技术标签:

【中文标题】如何找出 C# / .NET 中是不是存在文件?【英文标题】:How to find out if a file exists in C# / .NET?如何找出 C# / .NET 中是否存在文件? 【发布时间】:2010-09-07 12:38:24 【问题描述】:

我想在 C# 中测试包含文件路径的字符串是否存在该文件(类似于 Perl 中的 -e 测试或 Python 中的 os.path.exists())。

【问题讨论】:

【参考方案1】:

用途:

File.Exists(path)

MSDN:http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

编辑:在 System.IO 中

【讨论】:

File.Exists(path) 即使文件存在但调用者没有读取它的权限也会返回 false。有没有不同的方法来处理这种情况并检查文件是否存在,即使调用者无法读取它? @ADTC:从安全的角度来看,这样工作听起来很正常,但从开发人员的角度来看,这可能会使事情变得更复杂。如果您尝试创建文件,在这种情况下会出现异常吗? @ADTC 偶然发现我可能会提到投递箱目录。这些可以设置在您具有创建或写入权限但没有读取权限的位置。并不是说它与这个问题直接相关,只是它们并不像人们想象的那么奇怪。 旁注:如果路径的大小写与 G: 上的实际大小不完全匹配,File.Exists 在 Google Drive File Stream G: 驱动器上返回 False。通常在任何物理驱动器外壳上都没有关系,所以我想知道 Exists 方法有什么问题吗? @CTZStef 这是谷歌虚拟驱动器的怪癖,而不是框架方法。【参考方案2】:

System.IO.File:

using System.IO;

if (File.Exists(path)) 

    Console.WriteLine("file exists");
 

【讨论】:

【参考方案3】:

System.IO.File.Exists(路径)

msdn

【讨论】:

【参考方案4】:

提供完整路径作为输入。避免使用相对路径。

 return File.Exists(FinalPath);

【讨论】:

【参考方案5】:

我使用 WinForms,我使用 File.Exists(string path) 的方式是下一个:

public bool FileExists(string fileName)

    var workingDirectory = Environment.CurrentDirectory;
    var file = $"workingDirectory\fileName";
    return File.Exists(file);

文件名必须包含myfile.txt之类的扩展名

【讨论】:

使用 Path.Combine

以上是关于如何找出 C# / .NET 中是不是存在文件?的主要内容,如果未能解决你的问题,请参考以下文章

C#下载文件时,怎么先去判断目标文件是不是存在?

如何在.net mvc 3中使用c#检查网络中文件的存在

如何找出使用 .NET 锁定文件的进程?

在 C# 中验证文件是不是存在

c#中如何检测文件路径是不是存在

[ASP.NET][C#]下载文件时中文文件名出现乱码