java - Eclipse 在 bin 目录中找不到文件

标签 java eclipse file-io

所以我尝试从 Eclipse 项目中的配置文件读入,但它无法找到该文件。这是我的代码。

public void readConfigFile () {

    //URL url = Test.class.getClassLoader().getResource("myfile.txt");
    //System.out.println(url.getPath());

    URL url = getClass().getResource("/config");
    System.out.println(url);

    try {
        BufferedReader read = new BufferedReader(new FileReader(url.toString()));

        //read in values for constants from config file
        System.out.println(BASE_URL);
        BASE_URL = read.readLine().split("\t")[1];
        System.out.println(BASE_URL);

        read.close();
    }
    catch (Exception e)
    {
        System.out.println("Read from config file failed. Terminating program");
        System.out.println(e);
        System.exit(1);
    }
}

当我运行时,它会将 url 变量打印为:

/Users/myname/Development/workspace/New_API/bin/config

但是运行BufferedReader命令时找不到文件。我得到:

Read from config file failed. Terminating program
java.io.FileNotFoundException:  
file:/Users/myname/Development/workspace/New_API/bin/config.txt (No such file or directory)

但是,当我转到代码的 bin 目录时,配置文件就在那里。在 root bin 目录中,遵循 URL 给出的确切路径。 Eclipse 被什么搞乱了?

最佳答案

从类加载器获取资源时,您是从类路径获取资源,而不是从文件系统获取资源。如果您的应用程序打包为 jar,则您将无法通过 FileFileInputStream API 访问该资源,因为该资源是存档的一部分。相反,您可以像这样访问资源的输入流:

URL url = getClass().getResource("/config");

BufferedReader read = new BufferedReader(new InputStreamReader(url.openStream()));
// more...

关于java - Eclipse 在 bin 目录中找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578098/

相关文章:

java - 我们如何使用 --patch-module 从 OpenJDK 11 覆盖 java.base/java.lang.Integer?

java - 在 Groovy 中备份文件夹

java - 从添加的 zip 文件中获取可执行文件的路径

java - 在 URLClassPath 类的 Debug模式下有 MyEclipse 隐式断点

linux - 在 Linux 中测试 IO 性能

c# - Servlet,写入数据

java - 控制Lucene中文档的磁盘位置

java - 如何在Java中优雅地处理SIGKILL信号

eclipse - 为什么 Ubuntu 14.04 在 4.3 发布时坚持使用(旧的)Eclipse 3.8?

python - 将 StringIO 的内容写入文件的最佳方法是什么?