Java 获取文件未找到PrintWriter和文件异常

Java 获取文件未找到PrintWriter和文件异常,java,file,io,output,printwriter,Java,File,Io,Output,Printwriter,上面是我的代码,我正在尝试制作一个PrintWriter,它可以写入我在桌面上制作的名为file.txt的文件,但是我遇到了错误“未处理的异常类型,文件未找到异常”。我看过其他帖子,我不确定为什么我仍然会犯这个错误。我也尝试过在没有File对象的情况下这样做。我希望得到一些关于我哪里出错的指导Java有一种异常捕获机制,可以帮助您更好地编程。您必须处理一个异常FileNotFoundException,以警告如果程序找不到您的文件或您可以抛出此异常会发生什么。我建议学习Java中的异常处理。 此

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

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

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


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

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


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

public static void generateOutput()引发异常{…您的代码…}

在抛出/捕获中始终可以使用精确异常。您需要它,因为,
PrintWriter
可能有编译时异常。基本上,这意味着若并没有找到该文件,那个么它可以抛出异常,并且在编译时已知该异常。因此,您需要使用其中一种方法

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

PrintWriter输出=新的PrintWriter(文件)


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

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

public static void generateOutput()引发异常{…您的代码…}

在抛出/捕获中始终可以使用精确异常。您需要它,因为,
PrintWriter
可能有编译时异常。基本上,这意味着若并没有找到该文件,那个么它可以抛出异常,并且在编译时已知该异常。因此,您需要使用其中一种方法

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

PrintWriter输出=新的PrintWriter(文件)


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

这里您需要了解的最重要的一点是,您的文件可能:

  • 找不到
  • 将其描述符锁定(这意味着其他进程使用它)
  • 腐败
  • 被写保护
  • 在上述所有情况下,触发OS内核的Java程序将崩溃,异常将发生在运行时。为了避免这一事故,Java设计人员决定(他们做得很好),
    PrintWriter
    应该抛出(也就是说,有可能抛出)
    FileNotFoundException
    ,并且这应该是编译时检查的异常。这样,开发人员将避免更严重的运行时问题,如程序崩溃

    因此,您必须:

  • 在PrintWriter的方法中尝试catch
    ;或
  • 将异常抛出一级

  • 我想,你的问题是为什么会这样。以下是两个问题的答案:(1)为什么?以及(2)如何解决问题。

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

  • 找不到
  • 将其描述符锁定(这意味着其他进程使用它)
  • 腐败
  • 被写保护
  • 在上述所有情况下,触发OS内核的Java程序将崩溃,异常将发生在运行时。为了避免这一事故,Java设计人员决定(他们做得很好),
    PrintWriter
    应该抛出(也就是说,有可能抛出)
    FileNotFoundException
    ,并且这应该是编译时检查的异常。这样,开发人员将避免更严重的运行时问题,如程序崩溃

    因此,您必须:

  • 在PrintWriter的方法中尝试catch
    ;或
  • 将异常抛出一级

  • 我想,你的问题是为什么会这样。以下是两个问题的答案:(1)为什么?(2)如何解决。

    如果文件存在,则在方法签名中添加try-catch或add-throws异常如果文件存在,则在方法签名中添加try-catch或add-throws异常
    public static void generateOutput() throws FileNotFoundException {
            File file = new File ("C:/Users/me/Desktop/file.txt");
            PrintWriter outputFile = null;
            outputFile = new PrintWriter(file);
        }
    
    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
    }