在Java Web应用程序文件夹中创建文件并存储

Gig*_*aPr 4 java spring-mvc

我想创建一个xml文件并存储在我的Spring Mvc Web应用程序的文件夹中.

我可以用我的应用程序的根目录 request.getContextPath()

我如何获得应用程序的相对路径,以便它可以在应用程序文件夹的位置独立地在任何机器上工作?

喜欢 C:/folder/folder/MYAPPLICATIONROOTFOLDER

Wil*_*ung 7

你想这样做.

首先,您需要获取ServletContext.我不知道这是如何在Spring MVC中完成的,但它在某处.

然后你可以这样做:

ServletContext ctx = getServletContextFromSpringSomehow();
String path = ctx.getRealPath("/folder/filename.txt");
FileWriter fw = new FileWriter(path);
Run Code Online (Sandbox Code Playgroud)

这里的关键是ServletContext.getRealPath.它为您提供了webapp中资源的本地文件系统路径.在这里使用"/"的观察者,因为它是一个URL,而不是文件名.容器将为您提供有效的文件名作为回报.请注意,这仅适用于容器爆炸WAR或部署爆炸WAR的情况.如果WAR未爆炸,您将从容器中获得空值.

另请注意,这将适用于不存在的文件.容器不检查文件的实际存在.但实际上你可以创建任何缺少的中间目录等等.

最后,当然,即使您返回文件路径,也不意味着您实际上可以写入该路径.这是容器范围之外的OS权限问题.

  • 不要忘记:如果重新部署webapp,所有保存的文件都将丢失.如果您想要更多永久存储,请将其存储在webapp之外,即使需要在数据库中也是如此. (3认同)