为什么java不能找到文件?

时间:2015-04-18 06:54:25

标签: java file

现在试图让它工作一个小时,我似乎无法弄明白。看了几个网上的地方,我无法发现我做错了什么。

显然,Scanner无法找到该文件存在问题。

这是我的代码:

package week07;

import java.io.File;
import java.util.Random;
import java.util.Scanner;

public class FrequencyGenerator implements WordGenerator {
    private Random random;

    public FrequencyGenerator(Random r) {
        File file = new File("letter-frequencies.txt");

        Scanner fileScan = new Scanner(file);
        double[] frequencyArray = new double[22];

        for (double d : frequencyArray) {
            d = Double.valueOf(fileScan.nextLine());
            System.out.println(d);
        }
        fileScan.close();
    }

    public String nextWord(int n) {
        return "";
    }
}

以下是例外:

File: C:\Users\USER8\Desktop\cosc241\07\week07... [line: 17]
Error: Unhandled exception type java.io.FileNotFoundException 

3 个答案:

答案 0 :(得分:3)

问题不在于找不到文件,而是您的代码存在编译错误。

另一个问题是你似乎想用数字填充你的数组,除非它不会发生。

此外,由于这是2015年,您希望使用java.nio.file而不是File:

private static final Charset UTF8 = StandardCharsets.UTF_8;
private static final int LEN = 22;

// ...

public FrequencyGenerator(final Random r)
    throws IOException
{
    final Path path = Paths.get("letter-frequencies.txt");

    try (
        final BufferedReader reader = Files.newBufferedReader(path, UTF8);
    ) {
        final double[] array = new double[LEN];

        for (int i = 0; i < LEN; i++) {
            array[i] = Double.valueOf(reader.readLine());
            System.out.println(array[i]);
        }
    }
}

还有其他问题(例如,在打开文件时没有指定字符集; r构造函数参数未使用;您的数组从不使用;如果文件将会出错有少于22行;等等),但是代码的意图没有明确说明,所以很难解决所有问题。

最后,如果您使用Java 8,则可以进一步简化代码。

答案 1 :(得分:1)

该文件应存在于您的类文件所在的同一目录中。或者在创建File对象时输入文件的相对或绝对路径作为参数。

答案 2 :(得分:-1)

尝试使用:

File file = new File("\\letter-frequencies.txt");