Catch "FileNotFoundException"

本文关键字:quot FileNotFoundException Catch | 更新日期: 2023-09-27 18:32:40

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

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 方法将始终返回一个值,无论它是否有效。我该如何解决这个问题?

Catch "FileNotFoundException"

虽然File.Exists()适合作为开始,但请注意,如果在调用 File.Exists()new StreamReader() 之间的时间内文件变得无法访问(丢弃的网络驱动器、由另一个程序打开的文件、已删除等(,忽略异常仍会导致错误情况。

您可以使用

File.Exists:-

if(File.Exists(filePath))
{
  //Do something
}
else
{
}
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();
}