通过相对路径创建文件不适用于 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());
我现在正试图掌握流和套接字,所以我想为早期测试做的只是从普通 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());