这是我的代码:
public static void main(String[] args) {
try {
Scanner in = new Scanner(new File("f.txt"));
System.out.println("Next Double is: ");
System.out.println(in.nextDouble());
} catch (Exception e) {
e.printStackTrace();
}
}
我的“f.txt”在我的类路径中,我在netbeans left列中看到它(显示类路径类文件)。
但是这段代码会抛出找不到文件的异常。
为什么?
我的“f.txt”文件:
sdsdsdssf5s1d2s1 d5s s
s dlsfsf1s2 s1fsd1sd
sf31s3ds3ds
dgrh2t4jg6ng52.2 . 32 56. 2df5d5fd
sds2.3 2. 2 . 265.6 . 5 . 3 2 .f3sdsd
答案 0 :(得分:2)
我对netbeans并不熟悉,但看起来很有希望:Netbeans - Reading a data file in src folder
实质上,放置整个路径而不是文件名或将其移动到构建文件夹。
答案 1 :(得分:0)
这是Java begginners中的一个常见问题。
首先要理解这个理论: 如果你有一个包com.example,按常识你会把文件放在那里NOO! 您必须将文件放在all的根目录中(com文件夹之前的文件夹)。
所以你必须将f.txt放在MyProject文件夹中,一切都会好的。
关于不匹配异常,尽量不要使用像nextDouble()这样的不安全方法。发生的事情是读者试图将前4个字节转换为double(“sd”字符串),显然这将引发异常。尝试逐行或逐字符地读取,并从数组列表中执行一个简单的char数组。
答案 2 :(得分:0)
您还可以考虑使用类加载器使用getClass().getResourceAsStream("f.txt")
;将文件读取为包内的资源。这是访问资源的首选方式,因为您不再需要担心绝对路径和相对路径。如果资源在您的类路径中,您可以访问它。
如果应用程序使用多个类加载器,建议使用Thread.currentThread().getContextClassLoader()
返回的ClassLoader