java - 如何获取WAR文件的大小?

标签 java servlets war

我想获取我的服务器上运行的 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/

相关文章:

java - 在servlet Filter的方法doFilter中没有调用

javascript - 在 Javascript 加载之前,如何将系统信息从属性文件加载到 JSP 中?

java - Glassfish 3.1.2 build 5 WAR 部署问题

java - 将 Richfaces 添加到基于 Maven 的项目

java - 找不到类 'android.app.AppOpsManager',从方法 com.google.android.gms.common.kf.a 引用

java - 在给定另一个等效键对象的情况下获取映射条目的当前键

java - 两个 servlet 中的 Spring、MVC 和 REST

java - Maven:创建 2 个 war 文件,每个文件都有不同的 web.xml?

java - 从独立客户端访问部署在 JBoss 7.1.1 上的 WAR 中的 @Remote EJB

java - 从java中的未排序数组中获取未使用数字的列表