2010-01-13 133 views
2

如何检查文件是否存在于war文件中?我知道我可以使用如何检查文件是否存在于war文件中?

boolean doesExist = new File(myfile).exists(); 

但是我如何在战争的java类中使用它? file.getAbsolutePath()只显示war文件的运行位置。我需要检查战争中的其他目录中是否存在与战争中的文件名相匹配的图像,以便我可以显示该图像或通用图像(如果它不存在)。

回答

6

ServletContext.getResource()

,通过javadoc:

如果没有资源被映射到路径此方法返回null。

6

下面是你应该使用的方法只有如果你的战争不是部署要通过一些外部工具进行检查。

如果战争部署,和你有一个ServletContext可用,然后用它来代替(如图axtavt的答案)

一个war文件是一个zip文件,这样你就可以与java.util.zip包读它, 使用ZipFile

ZipFile zipFile = new ZipFile("/path/to/archive.war"); 
ZipEntry entry = zipFile.getEntry("yourSearchedEntry"); 
if (entry == null) { 
    // the file is not found in the war. 
} 
0

您需要使用getServletContext()方法getRealPath( “/”)

File f = new File(session.getServletContext().getRealPath("/")+"/myFile.ext"); 
if (f.exists()) { 
....... 
}