File.Exists - 错了吗?

时间:2012-05-20 19:14:08

标签: c# asp.net path

我试图查看图片是否存在,但是这表示不存在,路径是正确的! 路径是正确的,它有一张图片,但这总是去"否则"。

string path = @"c:\folder\pic.jpg";

if (File.Exists(path))
{ 
    //Do something here 
}
else 
{
}

3 个答案:

答案 0 :(得分:12)

这可能是权限问题。来自the documentation

  

如果调用者没有足够的权限来读取指定的文件,则不会抛出任何异常,并且无论路径是否存在,该方法都会返回false。

当然,这意味着当您运行的网络应用(通常在降低的权限下运行)时,您更有可能看到此问题。

此外,正如deerchao的评论中所述,如果给定的路径是文件而不是目录,File.Exists仅返回true。再次,从文档:

  

如果path描述目录,则此方法返回false。

答案 1 :(得分:5)

您正在尝试使用File.Exists查看文件夹是否存在。这是不正确的 - 目录会失败。

使用Directory.Exists查找目录是否存在。

string path = @"c:\folder";

if (Directory.Exists(path))
{ 
    //Do something here 
}
else 
{
}

另一个复杂因素是您的应用程序运行的帐户需要具有读取路径的权限 - 如果它没有权限,即使路径存在,这仍然会失败。

答案 2 :(得分:4)

我假设您正在尝试检查指定目录中是否存在任何文件?在这种情况下,您可以使用:

string path = @"c:\folder";

if (Directory.Exists(path) &&
    Directory.GetFiles(path).Any())
{
    //Do something here 
}
else
{
}

在.NET 4及更高版本中,您可以通过将GetFiles来电替换为EnumerateFiles来优化第二项检查。