【问题标题】:File Not Found when opening to read a file [closed]打开以读取文件时未找到文件[关闭]
【发布时间】:2014-01-21 03:40:19
【问题描述】:

我在我的程序中输入了一个路径名和一个文件名,这样就足够了,最终路径可能类似于

path = @"C:\ ...\";

其中 ... 只是以下文件所在目录的路径的其余部分。

file = "something.txt";

但执行此操作时找不到文件:

System.IO.StreamReader reader = new System.IO.StreamReader(path+file);

我对自己做错了什么感到困惑。我只是没有正确使用它吗?

我是个白痴对不起,我发现我做错了什么。

【问题讨论】:

  • 请贴出相关代码
  • 你是否避开了反斜杠?
  • 该文件确实存在。我确实创建了一个名为 something.txt 的文件。我用@符号逃脱了对吗?这不算数/
  • path+file 有坏消息熊。在尝试读取之前使用 Path.Combine() 或至少测试它是否存在。
  • 好的,我没有使用路径+文件,我将完整路径设置为一个“路径”变量。但我仍然得到一个 FNF 异常。

标签: c# io streamreader


【解决方案1】:

您可以尝试使用Path.Combine,但是如果您将完整路径直接分配给单个变量会更好,我不明白您为什么要这样做。

StreamReader reader = new StreamReader(Path.Combine(path,file));

注意:删除 path 变量的最后一个反斜杠

【讨论】:

  • 即使我事先连接了路径和文件,并且只在一个变量中包含完整路径,阅读器仍然给我一个 File not found 错误。
  • 然后检查您的路径并确保您的文件存在
  • 我确定它存在,我创建它并将它存储在我的代码所在的位置旁边,所以我不知道发生了什么
  • 我发现我做错了什么,对不起,这是愚蠢的
【解决方案2】:

创建一个FileInfo 对象,让您的生活更轻松。

FileInfo file = FileInfo(Path.Combine(path,file));
if(!file.Exists)
    throw new FileNotFoundException("File Not Found or Inaccessable"); //or handle approprately

 using(StreamReader reader = file.OpenText())
 {
      //do reading stuff here
 }

【讨论】:

  • 请记住,即使文件存在,您也会收到 FileNotFoundException,但应用程序无权读取该文件或访问该位置。
  • 是的,我认为我应该不那么懒惰并且自己抛出异常。但我的问题是由于我的愚蠢错误造成的。感谢您的意见,尽管用于其他用途,但我会牢记此建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多