如何找出 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 中是不是存在文件?的主要内容,如果未能解决你的问题,请参考以下文章