从Maven读取文件

时间:2012-05-10 13:07:02

标签: maven package filenotfoundexception filereader

我正在尝试使用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放在哪里?我还应该配置什么?

任何帮助都会受到极大关注。

3 个答案:

答案 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文件