我想获取我的服务器上运行的 WAR 文件的大小。我已经尝试过谷歌搜索如何做到这一点,但我没有任何运气。如果我尝试 File.length(),它会返回 0(不是很有帮助)。
我注意到,当我执行 request.getServletContext().getRealPath("/")
时,它返回:
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\nameofmyapp\
有什么方法可以使用此路径来查找已部署的 WAR 文件的大小吗?谢谢。
最佳答案
WAR 文件只是一个美化的 zip 文件,用于将 web 应用程序部署到 Tomcat。部署后,Tomcat 将 WAR 文件解压到同名目录中(不带 .war
扩展名)。
在您的应用中,request.getServletContext().getRealPath("/")
表示解压后的 Web 应用的根目录路径,而不是 WAR 文件的路径。 (这可能就是为什么您的 File.length
调用返回 0 — the javadoc 表示目录的长度未定义。)要获取 WAR 文件的路径和大小,请去掉尾部斜杠并添加.war
扩展名:
File webappPath = new File(request.getServletContext().getRealPath("/"));
File warFile = new File(webappPath.getParent(), webappPath.getName() + ".war");
int warSize = warFile.length();
关于java - 如何获取WAR文件的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15365708/