0

通过运行这个...

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

我不断收到这个错误,我真的不知道如何解决它。该文件当前与我的 .java 文件一起位于我的源包中。我可以通过指定路径很容易地读取文件,但我打算在多台计算机上运行它,所以我需要文件可以与程序一起移植。这个问题不是关于读取文本文件,而是在不使用绝对路径的情况下指定它的位置。我搜索了答案,但我得到的答案只是“指定名称”和“指定绝对路径”。我发布了一张图片以使其更清晰,但我没有 10 个代表这样做:/ 我该怎么做?

干杯。

4

4 回答 4

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. 但是,如果您有一个使用 an 的 api InputStream,则最好使用它getResourceAsStream

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

顺便说一句,如果您在 的行上得到一个空指针异常new File,这意味着您没有为文件指定正确的类路径。

于 2013-06-03T07:25:04.437 回答
0

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

-Project/
 ----src/
 ----test/
-Highscores.scr
于 2013-06-03T07:24:14.573 回答
0

如果您在 Eclipse 上构建代码,那么您需要将您的代码放入您Highscores.scr的项目文件夹中。试试看。

于 2013-06-03T07:24:30.823 回答
0

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

File f = new File(".");
System.out.println("Current Directory is: " + f.getAbsolutePath());
于 2013-06-03T07:26:24.517 回答