我在Snow Leopard上的Eclipse(Indigo)上运行以下Java 6代码时遇到FileNotFoundException:
import java.io.*;
import java.util.*;
public class readFile {
public static void main(String[] args) {
Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9
}
}
例外是
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type FileNotFoundException
at readFile.main(readFile.java:9)
我当前的工作区是/ Users / daniel / pr / java。它只包含一个项目(readFile),文件层次结构如下所示:
- readFile
- src
- (default package)
- readFile.java
- JRE System Library [JavaSE-1.6]
- myfile.txt
在阅读了几个非常相似的问题之后,我试过了
我很茫然。可能是什么问题呢? (感谢您阅读!)
答案 0 :(得分:5)
该例外告诉您问题。
主中的代码可能抛出FileNotFoundException,因此您需要在代码中考虑这一点,方法是在方法签名中声明可以抛出该异常,或者通过带有try catch的代码:
声明:
public static void main(String[] args) throws FileNotFoundException{
Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9
}
或使用try / catch
public static void main(String[] args) {
try {
Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9
} catch (FileNotFoundException e) {
//do something with e, or handle this case
}
}
这两种方法之间的区别在于,由于这是您的主要方法,如果您在方法签名中声明它,您的程序将抛出异常并停止,为您提供堆栈跟踪。
如果您使用try / catch,您可以通过记录错误,再次尝试等来处理这种情况。
您可能想看看: http://docs.oracle.com/javase/tutorial/essential/exceptions/要了解Java中的异常处理,它将非常有用。
答案 1 :(得分:4)
FileNotFoundException是一个经过检查的例外!你必须抓住例外......
public static void main(String[] args) {
try {
Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9
} catch(FileNotFoundException ex) {
//Handle exception code ...
}
}
答案 2 :(得分:2)
"/Users/daniel/pr/java/readFile/myfile.txt"
不应该是:
"/users/daniel/pr/java/readFile/myfile.txt"