一尘不染

Java getResourceAsStream()始终返回null

java

我在Java Web应用程序中具有以下结构:

TheProject
  -- [Web Pages]
  -- -- [WEB-INF]
  -- -- -- abc.txt
  -- -- index.jsp
  -- [Source Packages]
  -- -- [wservices]
  -- -- -- WS.java

在中WS.java,我在Web方法中使用以下代码:

InputStream fstream = this.getClass().getResourceAsStream("abc.txt");

但是它总是返回null。我需要读取该文件,并且我读到如果将文件放入其中WEB-INF,则可以使用进行访问getResourceAsStream,但是该方法始终返回null。

对我可能做错的任何想法?

它正在工作,但是当我Clean and Build在Project上执行了a之后,它突然停止工作了


阅读 371

收藏
2020-03-17

共2个答案

一尘不染

据我所知,该文件必须正确地放置在'this'该类所在的文件夹中,即不在该文件中,WEB-INF/classes而是嵌套得更深(除非你使用默认程序包编写):

net/domain/pkg1/MyClass.java  
net/domain/pkg1/abc.txt

将文件放入Java源应该可以正常工作,编译器会将该文件与类文件一起复制。

2020-03-17
一尘不染

代替

InputStream fstream = this.getClass().getResourceAsStream("abc.txt"); 

采用

InputStream fstream = this.getClass().getClassLoader().getResourceAsStream("abc.txt");

这样,它将从根目录而不是当前调用类的路径进行查看

2020-03-17