2014-12-02 121 views
2

我有一個方法來獲取特定文件的文件夾路徑:捕撈「FileNotFoundException異常」

string filePath = Path.Combine(Environment.GetFolderPath(
       Environment.SpecialFolder.MyDocuments), "file.txt"); 

後來,我用它來讀取文件中的文本:

StreamReader rdr = new StreamReader(filePath); // "C:\Users\<user>\Documents\file.txt" 
     string myString = rdr.ReadToEnd(); 

麻煩是,如果文件不存在,它會拋出一個FileNotFoundException(顯然)。我希望希望使用if/else來捕捉錯誤,用戶可以在其中直接瀏覽以找到該文件,但我不確定使用什麼來驗證filePath是否有效。

舉例來說,我不能用:

if (filePath == null) 

因爲檢索串頂端方法將總是返回一個值,它是否是有效的。我該如何解決這個問題?

+7

'如果(!File.Exists(文件路徑))' – MarcinJuraszek 2014-12-02 06:05:12

+0

@MarcinJuraszek:當文件之間作出存在()返回了true和文件的訪問嘗試刪除會發生什麼? – abatishchev 2014-12-02 06:35:39

+1

爲什麼你不**也趕上例外**並允許用戶選擇一個新文件? – 2014-12-02 06:52:58

回答

1

您可以使用File.Exists: -

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

} 
2

雖然File.Exists()是適合作爲開始,請注意,忽略異常仍可能導致錯誤狀態,如果該文件不可訪問(丟棄的網絡驅動器,文件打開通過另一個程序,刪除等)在撥打電話File.Exists()new StreamReader()之間的時間。

0
string filePath = Path.Combine(Environment.GetFolderPath(
       Environment.SpecialFolder.MyDocuments), "file.txt"); 

if(!File.Exists(filePath)) 
{ 
/* browse your file */ 
} 
else 
{ 

     StreamReader rdr = new StreamReader(filePath); // "C:\Users\<user>\Documents\file.txt" 
     string myString = rdr.ReadToEnd(); 
} 
相關問題