如何获取JAR文件中目录下的文件列表

时间:2012-01-27 18:52:28

标签: java

我想知道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

3 个答案:

答案 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等。