2012-05-20 30 views
-3

我想看看圖片是否存在,但這說的是不存在,路徑是正確的! 路徑是正確的,它有一張圖片,但這總是去「其他」。File.Exists - 錯?

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

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

試過Directory.Exists沒有? – deerchao

+1

你必須採取文件的絕對路徑而不是目錄本身。 –

+0

-1:當問題的性質完全通過糾正疏忽錯誤而改變時,這毫無幫助。通過編輯,除了Skeet之外的所有答案都是不相關的。 – Douglas

回答

10

這可能是一個權限問題。 From the documentation

如果調用方沒有足夠的權限來讀取指定的文件,則不會引發異常,並且無論路徑是否存在,該方法都會返回false。

當然,這意味着當您運行一個Web應用程序(通常在減少的權限下運行)比客戶端應用程序更有可能看到此問題。

此外,正如dechachao的評論中所述,File.Exists僅在給定的路徑爲文件而不是目錄時返回true。再次,從文檔:

如果路徑描述目錄,此方法返回false。

5

您正在嘗試查看是否存在使用File.Exists文件夾。這是不正確的 - 它會失敗的目錄。使用Directory.Exists來查找是否存在目錄。

string path = @"c:\folder"; 

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

另外一個複雜之處在於你的申請是根據需要運行的帳戶有權限讀取的路徑 - 如果它不具有的權限,這將仍然即使存在的路徑失敗。

+0

@Downvoter - 謹慎評論? – Oded

4

我假設你正試圖檢查指定目錄內是否存在任何文件?在這種情況下,你可以使用:

string path = @"c:\folder"; 

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

在.NET 4及更高版本,您可以通過與EnumerateFiles更換GetFiles調用優化第二次檢查。

+0

對不起,我忘了提及這是一個文件/圖片不是目錄! – Severiano

+1

@DiogoSeveriano:如果你將來會選擇更合適的文件名,這將有所幫助。名稱「文件夾」強烈建議文件夾/目錄,而不是文件。 –