提问人:Daniel Jordan 提问时间:5/5/2012 最后编辑:Daniel Jordan 更新时间:5/5/2012 访问量:18612
使用 Java 在 Eclipse 中创建 Scanner 时出现 FileNotFoundException
FileNotFoundException when creating a Scanner in Eclipse with Java
问:
在 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
在阅读了几个非常相似的问题后,我尝试了
- 将 myFile.txt 的副本放在项目、bin、src 和工作区目录以及我的主文件夹和根文件夹中
- 标识工作目录并使用相对路径
- 在Eclipse中通过“运行配置>参数>工作目录”手动设置工作区
- 在 bin、readFile、src 和 java 目录中使用命令行 Java 启动器运行程序(在所有这些位置都有 myfile.txt 的副本)
- 删除文件扩展名和/或加长文件名(超过某些假定的最小字符限制),以及
- 验证 myfile.txt 的权限(它们现在是 rw-r--r--)。
我不知所措。可能是什么问题?(感谢您的阅读!
答:
4赞
aleroot
5/5/2012
#1
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 ...
}
}
6赞
pcalcao
5/5/2012
#2
异常会告诉您问题所在。
main 中的代码可能会引发 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
}
}
这两种方法的区别在于,由于这是您的主要方法,如果您在方法签名中声明它,您的程序将抛出 Exception 并停止,从而为您提供堆栈跟踪。
如果使用 try/catch,则可以通过记录错误、重试等方式处理这种情况。
你可能想看一下: http://docs.oracle.com/javase/tutorial/essential/exceptions/ 学习 Java 中的异常处理,它会非常有用。
评论
0赞
NominSim
5/5/2012
第二种方法中的“投掷”是必要的吗?
1赞
pcalcao
5/5/2012
起伏不定!从第一个复制/粘贴...现已修复!谢谢。
2赞
Andrew Thompson
5/5/2012
#3
"/Users/daniel/pr/java/readFile/myfile.txt"
那不应该是:
"/users/daniel/pr/java/readFile/myfile.txt"
评论
0赞
Daniel Jordan
5/5/2012
用户目录在我的 mac 上是大写的。不过,也许不是在其他人身上。
评论