java/jsp Web 应用程序中的 FileOutputStream 路径
FileOutputStream paths in java/jsp web application
我有一个简单的 java Web 应用程序,具有以下文件夹结构。
当我部署 Web 应用程序时,它在 WEB-INF/classes 文件夹中有 data.json 文件。我需要从 WEB-INF/classes 文件夹中的 controller.java class 控制器包中将数据写入此文件。
我尝试了以下代码。
FileOutputStream output = new FileOutputStream("..\data.json", true);
output.write(jsonObject.toJSONString().getBytes());
output.flush();
这没有给我任何错误,表明该操作发生在我计算机某处的文件中。
如何写入 data.json 文件?我不能在这里给出绝对路径。
WEB-INF/classes 用于 class 路径。那里的文件应该被认为是只读的、可缓存的 resources (getResource, getResourceAsStream
).
可以用HttpRequest.getServletContext().getRealPath("/WEB-INF")
,
对于文件系统路径。
我建议使用classes文件作为模板,第一次复制到一个真实的文件系统路径,然后被覆盖。
使用 /
,而不是 Windows \
。
使用close()
然后flush()
就不需要了。
使用getBytes(StandardCharsets.UTF_8)
。
以下代码有效,
FileOutputStream output = new FileOutputStream( request.getSession().getServletContext().getRealPath("WEB-INF/classes/data.json"), false);
我有一个简单的 java Web 应用程序,具有以下文件夹结构。
当我部署 Web 应用程序时,它在 WEB-INF/classes 文件夹中有 data.json 文件。我需要从 WEB-INF/classes 文件夹中的 controller.java class 控制器包中将数据写入此文件。
我尝试了以下代码。
FileOutputStream output = new FileOutputStream("..\data.json", true);
output.write(jsonObject.toJSONString().getBytes());
output.flush();
这没有给我任何错误,表明该操作发生在我计算机某处的文件中。
如何写入 data.json 文件?我不能在这里给出绝对路径。
WEB-INF/classes 用于 class 路径。那里的文件应该被认为是只读的、可缓存的 resources (getResource, getResourceAsStream
).
可以用HttpRequest.getServletContext().getRealPath("/WEB-INF")
,
对于文件系统路径。
我建议使用classes文件作为模板,第一次复制到一个真实的文件系统路径,然后被覆盖。
使用 /
,而不是 Windows \
。
使用close()
然后flush()
就不需要了。
使用getBytes(StandardCharsets.UTF_8)
。
以下代码有效,
FileOutputStream output = new FileOutputStream( request.getSession().getServletContext().getRealPath("WEB-INF/classes/data.json"), false);