java - 列出 jar 文件中的 xml 文件

标签 java file-io jar

我有一个第 3 方 jar,其中包含许多我想要处理的 xml 文件。我不知道名字或号码 xml 文件,但我确实知道它们打包在 jar 中的文件夹。

URL url = this.class.getResource("/com/arantech/touchpoint/index");
System.out.println(url.toString());

这似乎返回一个有效的文件(文件夹)路径

jar:file:/home/.m2/repository/com/abc/tp-common/5.2.0/tp-common-5.2.0.jar!/com/abc/tp/index

但是当我尝试列出文件夹中的文件时,我总是收到 NullPointerException

File dir = new File(url.toString());
System.out.println(dir.exists());
System.out.println(dir.listFiles().length);

有什么指导吗?

最佳答案

这样你就可以遍历主文件夹:

URL url = this.class.getResource("/com/arantech/touchpoint/index");
JarFile jar;       
System.out.println("Loading JAR from: " + url.toString());

JarURLConnection URLcon = (JarURLConnection)(url.openConnection());
jar = URLcon.getJarFile();

Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements())
{
  JarEntry entry = (JarEntry) entries.nextElement();
  if (entry.isDirectory() || !entry.getName().toLowerCase().endsWith(".xml"))
    continue;

  InputStream inputStream = null;
  try
  {
    inputStream = jar.getInputStream(entry);
    if (inputStream != null)
    {
      // TODO: Load XML from inputStream
    }
  }
  catch (Exception ex)
  {
    throw new IllegalArgumentException("Cannot load JAR: " + url);
  }
  finally
  {
    if (inputStream != null)
      inputStream.close();          
  }
}
jar.close();

关于java - 列出 jar 文件中的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741406/

相关文章:

python - 如何将文件读入多个列表

java - 从 JTextPane 获取 html - 缺少内容文本

java - 将偶数和奇数写入 da 文件

java - 导出后,可运行 Jar 文件不运行

java - 如何从 Android Studio 项目中生成 .jar

java - LeanFT 项目中的 Jar 文件 - 类 Not Acceptable

java - IntelliJ 错误 : Scala 145, 错误:scalac:找不到 Scala 编译器 JAR

java - 仅使用 Java5 的 XML 到 Java 对象(无外部库)

java - 为什么如果在二维数组中的 int 前面放一个 0 会改变输出数字? java

java - 从其他 Intellij 项目导入/使用代码