使用扫描仪类显示文件内容

时间:2014-01-16 22:52:06

标签: java file java.util.scanner

这是我的代码:

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

3 个答案:

答案 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