java/jsp web应用程序中的FileOutputStream路径
我有一个简单的JavaWeb应用程序,具有以下文件夹结构 当我部署web应用程序时,它在web-INF/classes文件夹中有data.json文件。我需要从WEB-INF/classes文件夹中的controller.java class controller包将数据写入此文件 我尝试了以下代码java/jsp web应用程序中的FileOutputStream路径,java,tomcat,web-applications,fileoutputstream,file-writing,Java,Tomcat,Web Applications,Fileoutputstream,File Writing,我有一个简单的JavaWeb应用程序,具有以下文件夹结构 当我部署web应用程序时,它在web-INF/classes文件夹中有data.json文件。我需要从WEB-INF/classes文件夹中的controller.java class controller包将数据写入此文件 我尝试了以下代码 FileOutputStream output = new FileOutputStream("..\\data.json", true); output.write(jsonObject.toJ
FileOutputStream output = new FileOutputStream("..\\data.json", true);
output.write(jsonObject.toJSONString().getBytes());
output.flush();
这不会给我任何错误,这表明该操作发生在我计算机中的某个文件中
如何写入data.json文件?我不能在这里给出绝对路径。WEB-INF/classes用于类路径。那里的文件应被视为只读、可缓存的资源(
getResource,getResourceAsStream
)
可以使用HttpRequest.getServletContext().getRealPath(“/WEB-INF”)
,
用于文件系统路径
我建议使用类文件作为模板,第一次复制到真实的文件系统路径,然后被覆盖
使用/
,而不是Windows\\
使用close()
,然后不需要使用flush()
使用
getBytes(StandardCharsets.UTF_8)
WEB-INF/classes用于类路径。那里的文件应被视为只读、可缓存的资源(getResource,getResourceAsStream
)
可以使用HttpRequest.getServletContext().getRealPath(“/WEB-INF”)
,
用于文件系统路径
我建议使用类文件作为模板,第一次复制到真实的文件系统路径,然后被覆盖
使用/
,而不是Windows\\
使用close()
,然后不需要使用flush()
使用getBytes(StandardCharsets.UTF_8)
以下代码工作正常
FileOutputStream output = new FileOutputStream( request.getSession().getServletContext().getRealPath("WEB-INF/classes/data.json"), false);
下面的代码起作用了
FileOutputStream output = new FileOutputStream( request.getSession().getServletContext().getRealPath("WEB-INF/classes/data.json"), false);
看看这篇文章可能对你有帮助:看看这篇文章可能对你有帮助:把data.json文件放在WEB-INF文件夹的类文件夹之外可以吗?在WEB-INF之外,外界可以直接访问它。对/yourapp/data.json的任何请求都将服务于该文件,除非您明确保护它。这里的HTTPRequest是什么?我怎样才能得到它。我可以将一个
HttpServletRequest
对象从jsp传递到java文件,但它不包含GetServletContext()方法。是的,这就是我的意思。可以将data.json文件放在WEB-INF文件夹中的classes文件夹之外?在WEB-INF之外,外部世界可以直接访问它。对/yourapp/data.json的任何请求都将服务于该文件,除非您明确保护它。这里的HTTPRequest是什么?我怎样才能得到它。我可以将HttpServletRequest
对象从jsp传递到java文件,但它不包含getServletContext()方法