如何确定C#/.NET中是否存在文件?
我想测试一个包含文件路径的字符串在C#中是否存在该文件(例如Perl中的如何确定C#/.NET中是否存在文件?,c#,.net,io,C#,.net,Io,我想测试一个包含文件路径的字符串在C#中是否存在该文件(例如Perl中的-e测试或Python中的os.path.exists())。使用: File.Exists(path) MSDN: 编辑:在System.IO中System.IO.File.Exists(路径) : 输入完整路径。避免相对路径 return File.Exists(FinalPath); 我使用WinForms,我使用File.Exists(字符串路径)的方式是下一个: public bool FileExists(
-e
测试或Python中的os.path.exists()
)。使用:
File.Exists(path)
MSDN:
编辑:在System.IO中System.IO.File.Exists(路径)
:
输入完整路径。避免相对路径
return File.Exists(FinalPath);
我使用WinForms,我使用File.Exists(字符串路径)的方式是下一个:
public bool FileExists(string fileName)
{
var workingDirectory = Environment.CurrentDirectory;
var file = $"{workingDirectory}\{fileName}";
return File.Exists(file);
}
fileName必须包含扩展名,如
myfile.txt
File.Exists(path),即使文件存在,但调用方没有读取该文件的权限,也返回false。有没有其他方法来处理这种情况,并检查文件是否存在,即使调用者无法读取它?@ADTC:从安全角度来看,这样做听起来很正常,从开发人员的角度来看,这可能会使事情变得更复杂。如果您尝试创建一个文件,您会遇到例外情况吗?@ADTC刚刚偶然发现,并认为我可能会提到drop box目录。可以在您具有创建或写入权限但没有读取权限的位置设置。这并不是说它与这个问题直接相关,只是它们没有人们想象的那么奇怪。旁注:File.Exists在Google驱动器文件流G:Drive上返回False,如果路径的大小写与G:上的实际大小写不完全匹配。通常在任何物理驱动器上,外壳都不重要,所以我想知道,Exists方法有什么问题吗?@CTZStef这是谷歌虚拟驱动器的怪癖,而不是框架方法。
public bool FileExists(string fileName)
{
var workingDirectory = Environment.CurrentDirectory;
var file = $"{workingDirectory}\{fileName}";
return File.Exists(file);
}