getResourceAsStream()始终返回null

我在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对项目执行了一个操作之后,它突然停止工作了:/


FFIVE
浏览 7554回答 3
3回答

qq_遁去的一_1

Class#getResourceAsStream(String)在类路径中搜索对类加载器和资源的委托的调用。换句话说,你当前的代码将无法正常工作,你应该把abc.txt在WEB-INF/classes,或者WEB-INF/lib如果打包在一个jar文件。或使用ServletContext.getResourceAsStream(String)该允许servlet容器来使资源可从任何地点一个servlet,而无需使用一个类加载器。因此,从Servlet使用它:this.getServletContext().getResourceAsStream("/WEB-INF/abc.txt") ;但是有什么方法可以从Web服务调用getServletContext吗?如果使用的是JAX-WS,则可以WebServiceContext注入:@Resourceprivate WebServiceContext wsContext;然后从中获取ServletContext:ServletContext sContext= wsContext.getMessageContext()                             .get(MessageContext.SERVLET_CONTEXT));

莫回无

代替InputStream fstream = this.getClass().getResourceAsStream("abc.txt"); 采用InputStream fstream = this.getClass().getClassLoader().getResourceAsStream("abc.txt");这样,它将从根目录而不是当前调用类的路径进行查看
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java