如何直接从数据库中的子目录获取文件列表的路径。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,但我无法访问它,进一步看,它似乎只是ZipFileInputStream到ZipFile,这让我回到了原点
# 1 楼答案
抱歉,没有其他方法,至少在标准java库中没有。zip文件只包含一个条目列表,其中没有“随机访问”查找。可能还有其他库可以为您解析列表并创建某种层次结构的条目映射,但无论如何,一些代码需要遍历所有条目以找到您需要的内容