gpt4 book ai didi

java - 列出当前 JAR 文件目录中的文件

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:40 24 4
gpt4 key购买 nike

我正在用 JAVA 制作一个游戏,我想在我的 jar 中的某个目录中列出一个文件列表,这样我就可以确保有一个要在游戏中使用的类的列表。

例如说在我​​的 jar 里我有一个目录

mtd/entity/creep/

我想获取该目录中所有 .class 文件的列表使用 jar 中另一个类的 java 代码

这样做的最佳代码是什么?

最佳答案

旧的 java1.4 代码,但这会给你一个想法:

private static List getClassesFromJARFile(String jar, String packageName) throws Error
{
final List classes = new ArrayList();
JarInputStream jarFile = null;
try
{
jarFile = new JarInputStream(new FileInputStream(jar));
JarEntry jarEntry;
do
{
try
{
jarEntry = jarFile.getNextJarEntry();
}
catch(IOException ioe)
{
throw new CCException.Error("Unable to get next jar entry from jar file '"+jar+"'", ioe);
}
if (jarEntry != null)
{
extractClassFromJar(jar, packageName, classes, jarEntry);
}
} while (jarEntry != null);
closeJarFile(jarFile);
}
catch(IOException ioe)
{
throw new CCException.Error("Unable to get Jar input stream from '"+jar+"'", ioe);
}
finally
{
closeJarFile(jarFile);
}
return classes;
}
private static void extractClassFromJar(final String jar, final String packageName, final List classes, JarEntry jarEntry) throws Error
{
String className = jarEntry.getName();
if (className.endsWith(".class"))
{
className = className.substring(0, className.length() - ".class".length());
if (className.startsWith(packageName))
{
try
{
classes.add(Class.forName(className.replace('/', '.')));
} catch (ClassNotFoundException cnfe)
{
throw new CCException.Error("unable to find class named " + className.replace('/', '.') + "' within jar '" + jar + "'", cnfe);
}
}
}
}
private static void closeJarFile(final JarInputStream jarFile)
{
if(jarFile != null)
{
try
{
jarFile.close();
}
catch(IOException ioe)
{
mockAction();
}
}
}

关于java - 列出当前 JAR 文件目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/346811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com