提问人:ant 提问时间:11/2/2023 最后编辑:user207421ant 更新时间:11/2/2023 访问量:90
FileNotFoundException 尝试在 Java 中将 txt 文件作为方法的参数传递时 [已关闭]
FileNotFoundException when trying to pass txt file as parameter for method in Java [closed]
问:
都!我在扫描程序/传递文本文件作为方法的参数时遇到了问题。如果我在main中创建一个扫描仪,我可以做得很好。
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class App {
public static void main(String[] args){
File file = new File([FILEPATH]);
Scanner inputFile = new Scanner(file);
...
但是,当我尝试将文本文件传递给方法并在那里创建 Scanner 时,我得到一个 FileNotFoundException
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class App {
public static void main(String[] args){
File file = new File([FILEPATH]);
method(file);
}
public static String method(File file){
Scanner inputFile = new Scanner(file); //This is where I get the error :(
...
问题的提示特别指出该参数必须是文件,因此我无法将其更改为 String 参数来传递文件路径。
我使用 .getPath() 来确保我的方法中文件的文件路径与 main 中文件的文件路径匹配,并且确实如此。我不确定需要修复什么。将不胜感激任何帮助!
编辑;添加包含我的完整代码和每个版本的输出的屏幕截图,以便人们可以验证我的更改。
答:
您是否仔细阅读了错误消息?
它没有说“找不到文件” - 它说:“未解决的编译问题:未处理的异常类型 FileNotFoundException”。
这是因为被声明为抛出 a,而 your 必须处理该异常或声明它可能抛出 a(通过将其声明为new Scanner(file)
FileNotFoundException
method()
FileNotFoundException
method(File file) throws FileNotFoundException {...}
请注意,将方法声明为将处理异常或将其声明为引发的异常的义务委托给 的调用方。这意味着你的方法必须处理 或者你需要将方法声明为method(File file) throws FileNotFoundException {...}
method()
main()
FileNotFoundException
main()
public static void main(String[] args) throws FileNotFoundException {}
或
public static void main(String[] args) throws IOException {}
或
public static void main(String[] args) throws Exception {}`)
为什么编译器不抱怨有效的版本?
这是因为在有效的版本中,您将方法声明为 - Java 编译器对此感到满意:该声明告诉它,在 的正文中抛出的任何 Exception 都是可以接受的。main()
public static void main(String[] args) throws Exception {}
main()
评论
您没有收到 FileNotFoundException,您只是有一个未经处理的已检查异常。您应该使用 try-catch 块或抛出来处理要编译的代码的异常。
评论
try{ decode(file); } catch(FileNotFoundException ex){ }
main()
评论
System.out.println(file.getAbsolutePath()+" "+file.exists());
main()
Scanner
FileNotFoundException
Scanner
try-catch
throws