首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓住"FileNotFoundException“

抓住"FileNotFoundException“
EN

Stack Overflow用户
提问于 2014-12-02 06:03:26
回答 3查看 145关注 0票数 2

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

代码语言:javascript
复制
string filePath = Path.Combine(Environment.GetFolderPath(
               Environment.SpecialFolder.MyDocuments), "file.txt");

稍后,我使用它读取文件中的文本:

代码语言:javascript
复制
StreamReader rdr = new StreamReader(filePath); // "C:\Users\<user>\Documents\file.txt"
        string myString = rdr.ReadToEnd();

问题是,如果文件不存在,它会抛出一个FileNotFoundException (很明显)。我希望使用一个if/else来捕获错误,在这个错误中,用户可以浏览以直接查找文件,但我不知道如何验证filePath是否有效。

例如,我不能使用:

代码语言:javascript
复制
if (filePath == null)

因为检索字符串的top方法将始终返回一个值,不管它是否有效。我怎么才能解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-02 06:06:42

您可以使用File.Exists(http://msdn.microsoft.com/en-us/library/system.io.file.exists(v=vs.110%29.aspx):- )

代码语言:javascript
复制
if(File.Exists(filePath))
{
  //Do something
}
else
{

}
票数 1
EN

Stack Overflow用户

发布于 2014-12-02 06:25:57

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

票数 2
EN

Stack Overflow用户

发布于 2014-12-02 06:35:14

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27242887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档