正在创建.jar和FileNotFoundException


BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
Scanner sc = new Scanner(reader);

我的代码在ide中工作,我甚至在项目文件的所有文件夹中都有这个file.txt。我正在将项目导出到3个不同ide(netbeans、intellij idea、eclipse(中的jar,然后我运行jar文件,但我收到了这个错误(不幸的是,双击jar对我不起作用,所以我在cmd上使用java-jar来运行(;

Exception in thread "main" java.io.FileNotFoundException: file.txt (the system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)

如果我在代码中提供文件的完整路径,但我会将项目发送给其他人,这样文件夹就会更改,当我尝试InputStream等解决方案时,我会得到nullpointerexception。

在jar附近创建一个"files"文件夹,并将文件放入其中

String filePath = System.getProperty("user.dir")
+ File.separator
+ "files"
+ File.separator + "file.txt";
try {
BufferedReader reader = new BufferedReader(new FileReader(filePath));
Scanner sc = new Scanner(reader);
} catch (Exception e) {
e.printStackTrace();
}

使用getResourceAsStream正在工作。

InputStream inputStream = Main.class.getResourceAsStream("/komsu.txt");
InputStreamReader iss = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(iss);
Scanner sc = new Scanner(reader);

Main.class的主词这里是我的类名,如果你处理静态关键字,你可以像YourClassName.class那样做,也可以直接用getClass((方法代替Main.class。

最新更新