假设我有Java Web Application的这种结构:
TheProject
-- [Web Pages]
-- -- abc.txt
-- -- index.jsp
-- [Source Packages]
-- -- [wservices]
-- -- -- WS.java
WS.java
是我的Web服务,位于wservices
包中。现在,从这项服务,我需要访问abc.txt
文件并写入它。
这些是我的网址:
http://127.0.0.1:8080/TheProject/WS <- the webservice
http://127.0.0.1:8080/TheProject/abc.txt <- the file I want to access
要阅读该文件,我tried getResourceAsStream
并且我成功阅读了该文件。但是现在我也想写这个文件,我tried这样的方法却失败了。
有没有办法可以从abc.txt
访问WS.java
文件,并且能够成功读取和写入文件?
答案 0 :(得分:0)
您必须先找到该文件,然后在其上打开一个File对象,然后您可以照常使用它。从“getResource”返回的URL开始,然后从那里开始工作。
注意:这个技巧可以假设应用服务器部署WAR文件的方式,并使其不可移植。
答案 1 :(得分:0)
@Resource
private WebServiceContext context;
......
// receive the realpath to foo.txt inside of web-archive deployment
((ServletContext )context.getMessageContext().get(MessageContext.SERVLET_CONTEXT)).getRealPath("foo.txt")
但一般来说写一个坏主意 - JBOSS会将你的应用程序解压缩到一些tmp文件夹。因此,每次重新启动应用程序时,您都会收到新的foo.txt