通过相对路径创建文件不适用于 IDE

Creating file via relative path not working with IDE

我现在正试图掌握流和套接字,所以我想为早期测试做的只是从普通 txt 文件中读取行。

我先是通过IntelliJ设置的IDE,代码如下,

package NixWichtiges;

import java.io.*;

/**
 * Created by Wolfone on 08.03.2017.
 */
public class StreamReadTest {
    public static void main(String[] args) {
        BufferedReader bufferedReader = null;
        try {
            bufferedReader = new BufferedReader(new FileReader(new File("test.txt")));
            String message;
            while ((message = bufferedReader.readLine()) != null){
                System.out.println(message);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

test.txt 位于 StreamReadTest.java 所在的同一文件夹中,我检查它是否包含在通过执行 [=27 创建的编译输出的相应路径中=]运行 在 IntelliJ 中。但我一直收到 FileNotFoundException.

我更困惑的是,当我通过命令行编译和执行在我的另一台计算机上尝试它时,它工作得很好(使用默认包进行测试)。

谁能解释一下出了什么问题?

在此先感谢您对此的任何意见。

祝福 沃尔丰

这与 IntelliJ 无关——无论您如何 运行 这个应用程序,您都会遇到同样的问题。您引用了一个没有路径的文件,这意味着它将在您启动 jvm 运行 代码的目录中找到。尝试使用绝对路径,这应该可以解决问题。或者,了解类路径资源,这是查找文件的首选方式。而且,即使像这样的小程序也应该使用 maven 构建(这真的很容易)。

最后,您的源目录中不应包含此文件 (src/main/java)。它应该在资源目录中 (src/main/resources)。

要确认您 运行 所在的目录,您可以创建一个文件并查看其绝对路径,例如:

System.out.println(new File("").getAbsolutePath());