使用 PrintWriter 和 File 获取文件未找到异常

Getting file not found exception with PrintWriter and File

public static void generateOutput() {
    File file = new File ("C:/Users/me/Desktop/file.txt");
    PrintWriter outputFile = null;
    outputFile = new PrintWriter(file);
}

以上是我的代码,我正在尝试创建一个 PrintWriter 来写入我在桌面上创建的名为 file.txt 的文件,但是我收到错误消息“未处理的异常类型,找不到文件异常”。我查看了其他帖子,但不确定为什么我仍然收到此错误。我也尝试过在没有 File 对象的情况下这样做。我希望得到一些关于我哪里出错的指导

Java有一个异常捕获机制,可以帮助你更好地编程。您将必须处理异常 FileNotFoundException 以警告如果程序找不到您的文件将会发生什么,或者您可以 throws 此异常。我建议在 Java 中学习异常处理。 此代码可以帮助您

public static void generateOutput() {
        File file = new File ("C:/Users/me/Desktop/file.txt");
        PrintWriter outputFile = null;
        try {
            outputFile = new PrintWriter(file);
        } catch (FileNotFoundException e) {
            // Handle if your file not found
            e.printStackTrace();
        }
    }

或者

public static void generateOutput() throws FileNotFoundException {
        File file = new File ("C:/Users/me/Desktop/file.txt");
        PrintWriter outputFile = null;
        outputFile = new PrintWriter(file);
    }

假设您的文件存在于给定位置,您需要以下之一,

public static void generateOutput() throws Exception {... Your code ...}

或者

try {
//Your code 
}
catch(FileNotFoundException fnne) {
// Precise exception catching example
}
catch(Exception e) {
// Not required, but adding it to catch any other exception you might face
}

您始终可以在 throws/catch 中使用精确异常。你需要它是因为 PrintWriter 可以有编译时异常。基本上,这意味着如果未找到文件,则它可以抛出异常并且在编译时已知。因此,您需要使用其中一种方法。

除此之外,您将 2 行变成 1 行,如下所示,

PrintWriter output = new PrintWriter(file);

您不需要将输出对象初​​始化为 null,除非您是故意的。

您在这里必须了解的最重要的想法是,您的文件可能:

  1. 未找到;
  2. 锁定其描述符(这意味着其他进程使用它);
  3. 被损坏;
  4. 被写保护。

在上述所有情况下,您的 Java 程序触发 OS 内核,将崩溃,并且异常将在 运行time.为了避免这个事故,Java 设计师决定(他们做得很好),PrintWriter 应该抛出(意思是,有可能抛出)FileNotFoundException 并且这应该被检查编译时异常。这样开发人员将避免更严重的 运行 时间问题,例如程序崩溃。

因此,您要么必须:

  1. try-catch 在你的方法中那个 PrintWriter;或
  2. 向上抛出异常。

我认为,您的问题是关于为什么 会发生这种情况。这是两者的答案-(1)为什么? (2) 如何解决。