我有一个包含jar文件的目录,现在我想搜索一个特定文件,说log4j.xml包含在该目录中的某个jar中。我没有得到如何搜索该文件。请帮我解决。
答案 0 :(得分:1)
如果 是指类路径上的jar,则可以使用getResource或getResourceAsStream。
(如果没有,那么请参阅@ Bohzo的回答,重新:java.util.zip)
我通常称之为:
this.getClass().getClassLoader().getResource("log4j.xml");
还要注意相关的方法:getResourceAsStream(),getResources,findResources等。
HTH
答案 1 :(得分:0)
这在很大程度上取决于一件事 - 你的jar是否在类路径上。
classpath:log4j.xml
。答案 2 :(得分:0)
使用jar tf <filename>
,您可以列出jar文件的内容。如果有一堆,你可以使用像find . -name "*.jar" -exec jar tf {} \; | grep log4j.xml
答案 3 :(得分:0)
如果JAR不在类路径上,而是文件系统中的常规文件,那么您可以使用TrueZIP 7来完成这项工作:
首先,设置TrueZIP以在运行时类路径上使用模块truezip-driver-zip。然后根据您的特定需求使用以下代码:
TFile jar = new TFile("path/to/my.jar"); // a subclass of java.io.File
if (jar.isDirectory()) // true for regular directories and JARs if truezip-driver-zip is on your run time class path
for (TFile entry : jar.listFiles()) { // iterate top level directory
if ("log4j.xml".equals(entry.getName())) {
// Bingo! Now read the file or write it
InputStream in = new TFileInputStream(entry);
try {
... // do something here
} finally {
in.close();
}
} else if (entry.isDirectory()) {
... // use recursion to continue searching in this directory
}
}
此致 基督教
答案 4 :(得分:0)
我为这个场合开发了一个工具:https://github.com/javalite/jar-explorer