Java - 用于读取文本文件的FilenotfoundException

时间:2013-06-03 07:17:50

标签: java file text path filenotfoundexception

运行此...

File file = new File("Highscores.scr");

我一直收到这个错误,我真的不知道如何绕过它。 该文件当前位于我的.java文件的源包中。 我可以通过指定路径很容易地读取文件,但我打算在多台计算机上运行它,所以我需要使用该程序随身携带该文件。 这个问题不是关于读取文本文件而是指定其位置而不使用绝对路径。 香港专业教育学院搜索答案,但我得到的答案只是“指定名称”和“指定绝对路径”。 id发布图片以使其更清晰,但我没有10个代表这样做:/ 我该怎么做?

欢呼声。

4 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是将其放在类路径中,然后getResource()

package com.sandbox;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

public class Sandbox {

    public static void main(String[] args) throws URISyntaxException, IOException {
        new Sandbox().run();
    }

    private void run() throws URISyntaxException, IOException {
        URL resource = Sandbox.class.getResource("/my.txt");
        File file = new File(resource.toURI());
        String s = FileUtils.readFileToString(file);
        System.out.println(s);
    }


}

我这样做是因为我假设您需要File。但是如果你的api需要InputStream,那么最好使用getResourceAsStream

注意路径/my.txt。这意味着,“获取一个名为my.txt的文件,该文件位于类路径的根目录中”。我相信您可以阅读有关getResourcegetResourceAsStream的更多信息,以了解有关如何执行此操作的详情。但关键是文件的类路径对于您提供可执行文件的任何计算机都是相同的(只要您不在类路径中移动文件)。

BTW,如果在new File的行上得到空指针异常,则表示您没有为文件指定正确的类路径。

答案 1 :(得分:0)

据我记得,默认目录与项目文件夹级别相同。将文件放高一级。

-Project/
 ----src/
 ----test/
-Highscores.scr

答案 2 :(得分:0)

如果要在eclipse上构建代码,则需要将Highscores.scr放到项目文件夹中。试试看并检查。

答案 3 :(得分:0)

您可以尝试运行以下示例程序来检查程序正在拾取的当前目​​录。

File f = new File(".");
System.out.println("Current Directory is: " + f.getAbsolutePath());