我想获得我在服务器上运行的WAR文件的大小。我试过谷歌搜索怎么做,但我没有运气。如果我尝试File.length(),它返回0(不是很有用)。
我注意到当我request.getServletContext().getRealPath("/")
时,它会返回:
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\nameofmyapp\
有什么办法可以使用这条路径来查找部署的WAR文件的大小?感谢。
答案 0 :(得分:2)
WAR文件只是一个美化的zip文件,用于将Web应用程序部署到Tomcat。部署后,Tomcat将WAR文件解压缩到一个具有相同名称的目录(没有.war
扩展名)。
在您的应用中,request.getServletContext().getRealPath("/")
表示解压缩的webapp的根目录的路径,而不是WAR文件。 (这可能是您的File.length
调用返回0 - the javadoc的原因,表示目录的长度未定义。)要获取WAR文件的路径和大小,请删除尾部斜杠并添加{{ 1}}扩展名:
.war
答案 1 :(得分:0)
你可以试试这个:
File file = new File("C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/nameofmyapp.war");
if (file.exists()) {
double bytes = file.length();
double kiloBytes = (bytes / 1024);
double megaBytes = (kiloBytes / 1024);
double gigaBytes = (megaBytes / 1024);
double teraBytes = (gigaBytes / 1024);
double petaBytes = (teraBytes / 1024);
double exaBytes = (petaBytes / 1024);
double zettaBytes = (exaBytes / 1024);
double yottaBytes = (zettaBytes / 1024);
System.out.println("File Size: " + bytes + " B");
System.out.println("File Size: " + kiloBytes + " KB");
System.out.println("File Size: " + megaBytes + " MB");
System.out.println("File Size: " + gigaBytes + " GB");
System.out.println("File Size: " + teraBytes + " TB");
System.out.println("File Size: " + petaBytes + " PB");
System.out.println("File Size: " + exaBytes + " EB");
System.out.println("File Size: " + zettaBytes + " ZB");
System.out.println("File Size: " + yottaBytes + " YB");
} else {
System.out.println("Oops!! File does not exists!");
}
答案 2 :(得分:0)
File file = new File(""C:/Program Files/Apache Software Foundation/Tomcat6.0/webapps/myapp.war"");
long filesize = file.length();
答案 3 :(得分:0)
感谢您的建议。他们工作但他们在WAR本身内返回文件大小(WAR文件大约24 MB,它返回4096字节)。
无论如何,这是最终有效的代码:
@Autowired
ServletContext context; //because Tomcat 6 needs to have ServletContext autowired
String strWebAppName = context.getRealPath("/");
String strWarFile = new File(strWebAppName).getParent() + "/myappname.war";
File fileMyApp = new File(strWarFile);
long fileSize = 0;
if(fileMyApp.exists())
{
fileSize = fileMyApp.length();
}
返回24671122个字节。谢谢你的帮助。
编辑:刚看到你的帖子Matts。几乎就是我得到的。谢谢=)。