2014-09-22 72 views
5

我有一个功能,可以通过确定String PathFile还是Directory来自动创建指定的Path如果路径不存在,如何检查字符串路径是“文件”还是“目录”?

FileAttributes attributes = File.GetAttributes("//Path"); 

if ((attributes & FileAttributes.Directory) == FileAttributes.Directory) 
    { 
     Directory.CreateDirectory("//Path"); 
    } 

但是如果它不:

通常情况下,我想如果路径已经exists使用?如何检查String Path是否为FileDirectory如果不存在?

+1

'File.Exists'和'Directory.Exists' – 2014-09-22 13:57:49

+2

您要检查的东西,甚至不存在?如果你想检查一个给定的名字是否是一个有效的文件名,你可以简单地检查它是否有扩展名,否则它可能是一个目录。 – HimBromBeere 2014-09-22 13:58:10

+0

@MetroSmurf认真吗? “如果路径不存在,如何检查路径是文件还是目录?” – Rawling 2014-09-22 13:58:13

回答

5

如果您的方案中的文件必须有扩展名,那么您可以使用此方法。

注意:在windows中有合法的在目录中有句点,但这主要是为了跨文件操作系统的兼容性而引入的。在严格的Windows环境中,如果文件没有扩展名,或者在目录名中放置句点或空格,就被认为是不好的形式。如果你不需要考虑这种情况,那么你可以使用这种方法。如果不是,你将不得不通过链或结构发送某种标志来识别字符串的意图。

var ext = System.IO.Path.GetExtension(strPath); 
if(ext == String.Empty) 
{ 
    //Its a path 
} 

如果您不需要做文件类型的任何分析,你可以去简单:

if(System.IO.Path.HasExtension(strPath)) 
{ 
    //It is a file 
} 
+2

修改为布尔扩展= System.IO.Path。HasExtension(“// Path”)' – Enumy 2014-09-22 14:19:58

+3

+0:注意:虽然此方法可能适用于OP,但它是错误的:文件夹名称没有限制,不包含点。拥有名为“MyImages.jpg”或“Game.Saves”的文件夹完全可以。 – 2014-09-22 14:38:10

+0

我想我在答案中明确表达了这一点。 – Carter 2014-09-22 14:56:39

相关问题