首页  >  文章  >  后端开发  >  C# FileNotFoundException

C# FileNotFoundException

PHPz
PHPz原创
2024-09-03 15:20:57949浏览

在 C# 中处理文件输入输出时,可能会出现各种异常,但当我们尝试访问程序中的文件并且该文件不存在或被删除时,会引发 FileNotFoundException。因此,基本上,当我们在系统中拥有文件的地址,但当我们执行程序时,找不到我们提到或传递的文件时,就会发生 FileNotFound 异常。找不到此文件的原因可能有多种。该文件可能已从该位置删除,或者文件名可能已更改且与我们提到的名称不匹配。也有可能当我们传递了错误的地址,当它命中该地址时,没有文件,从而发生异常。

语法:

每个方法、类或异常都有其标准语法。

如果出现 FileNotFound 异常,标准语法如下:

public class FileNotFoundException :System.IO.IOException

FileNotFound 异常是 IOException 的一部分,IOException 继承自 SystemException,向上到 Exception 和 Object 类。

FileNotFoundException 在 C# 中如何工作?

  • FileNotFoundException 实现了 HRESULT COR_E_FILENOTFOUND,其中包含 0x80070002 值。
  • 此 FileNotFound 异常通常在处理文件的输入输出操作时发生。
  • 当代码找不到文件时,它会创建 FileNotFoundException() 的新实例及其消息字符串,这是系统设置的错误消息。
  • 在各种此类构造函数中,可以添加字符串,可以显示上下文信息和错误消息。
  • 此外,另一个构造函数可以提供对导致此异常的内部异常的引用。

C# FileNotFoundException 示例

下面给出了提到的示例:

示例#1

代码:

using System;
using System.IO;
class Program {
static void Main() {
try {
using (StreamReaderfilereader = new StreamReader("nofile.txt")) {
filereader.ReadToEnd();
}
}
catch (FileNotFoundException ex) {
Console.WriteLine(ex);
}
}
}

说明:

  • 我们只是从系统文件开始。 System.IO 是这里的一个重要的导入文件,因为我们将对文件输入和输出进行操作。然后我们就有了我们的类和主要方法。我们已经进入了 try catch 块以捕获异常。然后我们就有了 StreamReader 类,它位于 system.IO 命名空间中。
  • StreamReader 类用于读取文本文件。它易于使用并提供良好的性能。通过 StreamReader,我们有了调用 nofile.txt 的对象,据我们所知,该对象不存在。然后我们有 ReadToEnd 方法,如果找到的话,它将读取文件直到结束。最后,我们有 catch 块,当然,正如我们所说,它保存 FileNotFound 异常,当它捕获它时,它将在下一行的输出语句中打印。
  • 成功执行上述代码后,输出将是异常,“无法找到文件...”。

输出:

C# FileNotFoundException

示例#2

这里我们将执行与上面代码类似的代码,但没有任何 try catch 块,这将是一个简单的程序,我们无法猜测到底会出现什么问题。

代码:

using System.IO;
using System;
class Program {
static void Main() {
using (StreamReaderfilereader = new StreamReader("incorrectfilename.txt")) {
filereader.ReadToEnd();
}
}
}

说明:

  • 在我们的第二个示例中,代码几乎与第一个示例类似,但我们没有具体实现任何捕获异常的方法。从系统文件开始,然后是我们的类和 main 方法。然后前进到 StreamReader,我们传递了文件名,这是不正确的,在下一行中我们尝试读取文件到底。
  • 但是我们没有尝试捕获或识别这里的异常,这是我们相信该文件存在的场景,因此我们不希望出现任何异常。执行时会打印 Unhandled Exception 并抛出“System.IO.FileNotFoundException: Could not find file”。

输出:

C# FileNotFoundException

正如您所看到的,与我们之前的示例不同,这是一个未处理的异常,并且输出符合预期。

如何在 C# 中避免 FileNotFoundException?

就像任何其他异常一样,这个 FileNotFound 异常是可以避免的。在我们可以用来避免此异常的方法中,建议使用 File.Exists 方法。当我们不确定传入参数的文件在源链接中是否不可用时,最好使用 File.Exists 方法。推荐使用 File.Exists 方法。

示例:

我们将在程序中使用 File.Exists 方法,看看如何进一步使用它。

代码:

using System.IO;
using System;
class Program {
static void Main() {
bool ifexists = File.Exists("incorrectfilename.txt");
Console.WriteLine("\n "+ifexists);
}
}

说明:

  • 我们这里的代码非常适合我们不确定要使用的文件是否存在的情况。这是简单的实现,我们可以在循环中使用这样的代码,它检查不同或替代文件,并选择存在的文件进行操作。
  • 我们有 File.Exists 方法,我们在其中传递了文件名并检查文件是否存在。
  • 现在在下一行中,我们有 print 语句,它将根据文件是否存在打印一个布尔值,True 或 False。我们的文件不存在,所以它必须返回 false。

输出:

C# FileNotFoundException

结论

总而言之,FileNotFound 异常来自对象类的 IO 系统命名空间。 FileNotFoundException 是在我们传递文件或尝试对文件执行输入或输出操作但该文件不存在时发生的。其他原因可能是文件名不正确或源链接不正确。可以使用 File Exists 方法来避免此异常。

以上是C# FileNotFoundException的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn