捕获“FileNotFoundException”

时间:2014-12-02 06:03:27

标签: c#

我有一种获取特定文件的文件夹路径的方法:

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)

因为检索字符串的top方法总是会返回一个值,无论它是否有效。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

虽然File.Exists()适合作为开始,但请注意,如果文件无法访问(网络驱动器丢失,其他程序打开文件,删除等),忽略该异常仍会导致错误情况致电File.Exists()new StreamReader()之间的时间。

答案 1 :(得分:1)

您可以使用File.Exists: -

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

}

答案 2 :(得分: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();
}