使用 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,除非您是故意的。
您在这里必须了解的最重要的想法是,您的文件可能:
- 未找到;
- 锁定其描述符(这意味着其他进程使用它);
- 被损坏;
- 被写保护。
在上述所有情况下,您的 Java 程序触发 OS 内核,将崩溃,并且异常将在 运行time.为了避免这个事故,Java 设计师决定(他们做得很好),PrintWriter
应该抛出(意思是,有可能抛出)FileNotFoundException
并且这应该被检查编译时异常。这样开发人员将避免更严重的 运行 时间问题,例如程序崩溃。
因此,您要么必须:
try-catch
在你的方法中那个 PrintWriter;或
- 向上抛出异常。
我认为,您的问题是关于为什么 会发生这种情况。这是两者的答案-(1)为什么? (2) 如何解决。
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,除非您是故意的。
您在这里必须了解的最重要的想法是,您的文件可能:
- 未找到;
- 锁定其描述符(这意味着其他进程使用它);
- 被损坏;
- 被写保护。
在上述所有情况下,您的 Java 程序触发 OS 内核,将崩溃,并且异常将在 运行time.为了避免这个事故,Java 设计师决定(他们做得很好),PrintWriter
应该抛出(意思是,有可能抛出)FileNotFoundException
并且这应该被检查编译时异常。这样开发人员将避免更严重的 运行 时间问题,例如程序崩溃。
因此,您要么必须:
try-catch
在你的方法中那个 PrintWriter;或- 向上抛出异常。
我认为,您的问题是关于为什么 会发生这种情况。这是两者的答案-(1)为什么? (2) 如何解决。