【问题标题】:Java - FilenotfoundException for reading text fileJava - FilenotfoundException 用于读取文本文件
【发布时间】:2013-06-03 07:17:50
【问题描述】:

通过运行...

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

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

干杯。

【问题讨论】:

  • 你的班级在哪个目录下?
  • 试试System.out.println(new File(".").getAbsolutePath())看看这是否是正确的目录。
  • 发布图片没问题,有人会编辑它

标签: java file text path filenotfoundexception


【解决方案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。但是,如果您有一个使用 InputStream 的 api,那么使用 getResourceAsStream 可能会更好。

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

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

【讨论】:

  • 使用的 InputStream 文件 = getClass().getResourceAsStream("/Highscores.scr");它工作得很好!谢谢领带!!
【解决方案2】:

据我所知,默认目录与您的项目文件夹级别相同。将文件提高一级。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-05
        • 1970-01-01
        • 1970-01-01
        • 2016-08-08
        • 2013-02-17
        • 2011-06-10
        • 2010-11-02
        相关资源
        最近更新 更多