Палец вверх 2
Перевод
Перевод

Как получить список файлов в каталоге в файле JAR

Я хочу знать список файлов в каталоге 'META-INF / config' в файле JAR.

Я использую приведенный ниже код для получения списка файлов. Но это терпит неудачу.

    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());
      }
    }

Может кто-нибудь помочь мне исправить это?

Заранее спасибо, Мависва

java
задан maviswa 27 янв. 2012 г., 22:52:27
источник

3 ответа

Палец вверх 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);
  }
  }
}

Удачи!!!

ответ дан Fahim Parkar 27 янв. 2012 г., 23:00:07
источник
Палец вверх 0
Перевод
Перевод

Я помню, что мне пришлось делать это некоторое время назад, чтобы прочитать файл jar manifest.mf, чтобы извлечь информацию о его версии для отображения. Учитывая, что у всех правильно построенных jar-файлов есть манифесты, попытка получить к ним доступ как к ресурсу невозможна (все они имеют одинаковый путь), и, как таковая, пришлось проверить jar-файл индивидуально в виде zip-файла.

Учитывая, что вы не предоставляете информацию о том, где происходит сбой, трудно угадать, в чем заключается ваша проблема. Я не уверен, что он не находит файл, который вы ожидаете, или он читает неправильный файл, или вы получаете NPE и т. Д.

ответ дан Eric B. 28 янв. 2012 г., 0:07:55
источник
Палец вверх 0
Перевод
Перевод

попробуйте добавить "/" или "./" перед META-INF в getResources() например ...

read.currentThread().getContextClassLoader().getResources("./META-INF/config/");
ответ дан Ran Segal 27 янв. 2012 г., 23:15:27
источник