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

时间:2020-07-05 17:58:36

标签: java file io output printwriter

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对象的情况下这样做。我希望就我哪里出错了一些指导

3 个答案:

答案 0 :(得分:0)

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);
    }

答案 1 :(得分:0)

假设文件位于给定位置,则需要以下之一,

公共静态void generateOutput()引发异常{...您的代码...}

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
}

您总是可以在throw / catch中使用精确的异常。您需要它,因为PrintWriter可能具有编译时异常。基本上,这意味着如果找不到文件,那么它将引发异常,并且在编译时就知道了。因此,您需要使用一种方法。

除此之外,您还可以按照以下步骤将2行变成1,

PrintWriter输出=新的PrintWriter(文件);

除非您有意将输出对象初​​始化为null,否则无需将其初始化为空。

答案 2 :(得分:0)

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

  1. 找不到;
  2. 已将其描述符锁定(这意味着其他进程正在使用它);
  3. 被破坏;
  4. 具有写保护。

在上述所有情况下,触发OS内核的Java程序都会崩溃,并且例外会在运行时发生。为了避免发生这种情况,Java设计人员决定(并且做得很好),PrintWriter应该抛出(意味着有可能抛出)FileNotFoundException,并且这应该是在编译时检查的异常。这样,开发人员将避免出现更严重的运行时问题,例如程序暗恋。

因此,您要么必须:

  1. try-catch在您的方法中为PrintWriter;或
  2. 向上一级抛出异常。

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