有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何直接从数据库中的子目录获取文件列表的路径。JAR JAVA

我正在寻找一种方法,以直接获取一个目录中指定子目录中所有文件的列表。罐子

这是类似的:How do I list the files inside a JAR file?

但不幸的是,上面列出的方法将迭代整个系统中的所有文件。罐子当你和一个朋友一起工作时。jar中有许多文件-这似乎不切实际,就像我的情况一样。必须有一种方法可以直接指向目录中的子目录。jar并迭代其内容,而不必迭代jar的所有内容,然后过滤结果以找到您关心的条目

以下是我的大致情况:

public static ArrayList<String> loadInternalFileListing(MetaDataType type, MetaDataLocation location, String siteId)
{
  ArrayList<String> filenameList = new ArrayList<String>();
  URL url = getInternalFile(type, null, location, siteId);

  JarURLConnection juc = null;
  JarFile jarFile = null;

  try
  {
    juc = (JarURLConnection) url.openConnection();
    jarFile = juc.getJarFile();
    Enumeration<JarEntry> entries = jarFile.entries();

    for(JarEntry jarEntry = entries.nextElement(); entries.hasMoreElements(); jarEntry = entries.nextElement())
    {
       ...//logic here
    }
  }
  ... //catch, handle exceptions, finally block and other logic

  return filenameList;
}

变量:url->;:jar:file:/C:/jboss-4.2.2。GA/server/username/tmp/deploy/tmp8421264930467110704SomeEar。耳朵内容/一些业务。罐子/细分1/细分2/细分3/细分4/

路径:/subdir1/subdir2/subdir3/subdir4/正是我要迭代的地方

调试表明,juc确实是正确创建的,并且指向了正确的路径jarFile然后正如预期的那样,只给我jar文件路径,这就是我丢失子目录和开始在根目录上迭代的原因。这一切都是有道理的。这显然不是正确的方法。一定有别的办法

在理论上指向我感兴趣的正确目录的JarURLConnection上乱搞,并没有发现任何有用的东西。存在连接。getInputStream()。调试器表明它最终保存了一个ZipFileInputStream,但我无法访问它,进一步看,它似乎只是ZipFileInputStreamZipFile,这让我回到了原点


共 (1) 个答案

  1. # 1 楼答案

    抱歉,没有其他方法,至少在标准java库中没有。zip文件只包含一个条目列表,其中没有“随机访问”查找。可能还有其他库可以为您解析列表并创建某种层次结构的条目映射,但无论如何,一些代码需要遍历所有条目以找到您需要的内容