如何检查war文件中是否存在文件?

时间:2010-01-13 17:56:14

标签: java file file-io

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

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

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

3 个答案:

答案 0 :(得分:6)

ServletContext.getResource()

来自javadoc:

  

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

答案 1 :(得分: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.
}

答案 2 :(得分:0)

你需要使用getServletContext()。getRealPath(" /")

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