我想知道JAR文件中'META-INF / config'目录下的文件列表。
我使用以下代码检索文件列表。但它失败了。
Enumeration<URL> path = Thread.currentThread().getContextClassLoader().getResources("META-INF/config/");
while(path.hasMoreElements())
{
URL path1 = path.nextElement();
System.out.println("File =" +path1.getFile());
File configFolder = new File(path1.getPath());
File[] files = configFolder.listFiles();
for (File file : files)
{
System.out.println("\nFile Name =" + file.getName());
}
}
有人可以帮我解决这个问题吗?
先谢谢, Maviswa
答案 0 :(得分:0)
尝试以下代码
import java.util.*;
import java.util.jar.*;
import java.util.zip.*;
import java.io.*;
public class JarContents{
public static void main(String[] args) throws IOException{
JarContents mc = new JarContents();
}
public JarContents() throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter jar file name: ");
String filename = in.readLine();
File file = new File(filename);
if(!filename.endsWith(".jar")){
System.out.println("Invalid file name!");
System.exit(0);
}
else if(!file.exists()){
System.out.println("File not exist!");
System.exit(0);
}
try{
JarFile jarfile = new JarFile(filename);
Enumeration em = jarfile.entries();
for (Enumeration em1 = jarfile.entries(); em1.hasMoreElements();) {
System.out.println(em1.nextElement());
}
}
catch(ZipException ze){
System.out.println(ze.getMessage());
System.exit(0);
}
}
}
祝你好运!!!
答案 1 :(得分:0)
尝试在"/"
电话中的META-INF之前添加"./"
或getResources()
例如
...
read.currentThread().getContextClassLoader().getResources("./META-INF/config/");
答案 2 :(得分:0)
我记得不得不这样做一段时间回来读一个jar的manifest.mf来提取它的版本信息来显示。鉴于所有正确构建的jar都有清单,尝试将它们作为资源访问是不可能的(它们都有相同的路径),因此,必须将jar单独检查为zip文件。
鉴于您没有提供有关故障位置的信息,因此很难猜测您的问题是什么。我不确定它是否找不到您期望的文件,或者是否正在读取错误的文件,或者您是否正在使用NPE等。