我正在尝试使用MAVEN构建一个非常小的程序,从文件中读取,但我出错了,因为它给了我FileNotFoundException。
这就是我的目录结构的样子:
my-app
src
main|
|
|--java|
| |
| Main.java
|
|--resources|
|
res.txt
res.txt包含一些我想从Main.java中读取的字符串
...
File file = new File("res.txt");
FileReader fr= new FileReader(file);
BufferedReader br = new BufferedReader( fr);
...
我编译它: C:\ my-app mvn package
它在目标下创建jar。当我在jar中窥视时,我看到它包含Main.class和res.text 彼此相邻。(在同一目录下)
但是,当我尝试运行它时:
java -cp target / my-app-1.0-SNAPSHOT.jar Main
我给出了我的FileNotFoundException,Main.class以某种方式看不到res.txt文件。为什么?我应该把res.txt放在哪里?我还应该配置什么?
任何帮助都会受到极大关注。
答案 0 :(得分:0)
我假设.txt文件被复制到目标文件夹和jar文件的一部分?
在这种情况下,使用资源加载器从类路径而不是从文件系统中检索它。
有关如何加载文件的一些示例,请参阅read file in classpath。
答案 1 :(得分:0)
您可以尝试使用
File file = new File(this.getClass().getResource("/res.txt").getFile());
甚至
File file = new File(this.getClass().getResource("/res.txt").toURI());
答案 2 :(得分:0)
InputStream TokenStream = this.getClass()。getResourceAsStream(“ / files / Token.xlsx”);
XSSFWorkbook wb =新的XSSFWorkbook(TokenStream);
XSSFSheet工作表= wb.getSheetAt(0);
这适用于读取Excel文件