我正在用JAVA制作游戏,我想在jar中的某个目录中列出文件列表,这样我就可以确保列出要在游戏中使用的这些类的列表。
例如说我的罐子里有一个目录
mtd/entity/creep/
我想 使用jar中另一个类的Java代码 获取该目录中所有.class文件的列表。
这样做的最佳代码是什么?
旧的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();
}
}
}
问题内容: 在Python中,我只想列出当前目录中的所有文件。我不希望从任何子目录或父目录中列出文件。 似乎确实有类似的解决方案,但它们似乎对我不起作用。这是我的代码段: 假设我在当前目录中有2个文件holygrail.py和Tim。我也有一个文件夹,其中包含两个文件- 我们称它们为Arthur和Lancelot。当我运行脚本时,这就是我得到的: 我对holygrail.py和Tim感到满意。但是
在Python中,我只想列出当前目录中的所有文件。我不想从任何子目录或父目录中列出文件。 似乎也有类似的解决方案,但它们似乎不适合我。以下是我的代码片段: 假设我有两个文件,holygrail.py和蒂姆在我的当前目录。我也有一个文件夹,里面有两个文件——让我们称之为亚瑟和兰斯洛特。当我运行脚本时,这是我得到的: 我对holygrail.py和蒂姆很满意。但是亚瑟和兰斯洛特这两个文件,我不想列出来
问题内容: 如何在当前目录及其子目录中显示所有大于10k字节的文件。 尝试过,但是没有用。 问题答案: 第一部分与@sputnicks答案相同,并成功查找目录中超过10k的所有文件(不要将k与K混淆),我的补充是,第二部分然后执行或ls列出(-l)文件通过人类可读的大小(-h)。如果愿意,可以取反h。当然是文件本身,而仅仅是文件的替代 在实践中会重复或: 将其显示为一条语句或: 更多\; vs +
问题内容: “ java”如何知道要执行的类文件而不设置类路径。即,默认情况下它是否签入当前目录,或者我们也需要为当前目录设置类路径。 问题答案: 它首先检查当前目录。如果找不到该类,它将在类路径中搜索该类。 默认的类路径是当前目录。设置变量或使用命令行选项将覆盖默认值,因此,如果要在搜索路径中包括当前目录,则必须将其包括在新设置中。[ 来源 ]
问题内容: 我有一个具有以下结构的文件夹 我只对rootDir中的xml文件感兴趣。如果我使用JDOM读取XML,则以下代码还将考虑“ testDirectory”中的文件并吐出“内容不允许异常” 如何在使用listFiles方法时排除子目录?以下代码可以工作吗? 问题答案: 使用a 代替,因为它将使您能够访问实际文件,然后包括对
问题内容: 如何在Clojure特定目录中的所有文件中创建一个列表?我必须求助于Java还是Clojure可以本地处理? 问题答案: 使用功能。 用法示例: