我循环遍历目录中的所有.jar文件,并希望在对话框中显示.jar文件名和.jar中的“.java”文件名。 我几乎是正确的,但显示.jar中的所有文件名。 我的工作代码是:
for (Enumeration em1 = jarfile.entries(); em1.hasMoreElements();)
{
notes = Collections.list(em1);
}
JOptionPane.showMessageDialog(null, jarName + "\n" + notes);
当我尝试仅清除(“。java”)文件名时,我无法正确理解......
for (Enumeration em1 = jarfile.entries(); em1.hasMoreElements();)
{
if(em1.endsWith(".java"))
{
notes = Collections.list(em1);
}
}
JOptionPane.showMessageDialog(null, jarName + "\n" + notes);
我希望这是一种合成愚蠢的东西。我已经尝试了几个小时的可能性。有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
我想你想用
for (Enumeration<? extends ZipEntry> em1 = jarfile.entries();
em1.hasMoreElements();)
{
ZipEntry entry = em1.nextElement(); // Get a ZipEntry
if(entry.getName().endsWith(".java")) { // Get the name, should probably be
// ".class"
notes = Collections.list(em1); // It does end with ".java".
}
}
答案 1 :(得分:0)
尝试将其转换为String
。这样您就可以使用.endsWith(...)
方法:
String value = (String) em1.nextElement();
if(value.endsWith(".java"))
{
notes = Collections.list(em1);
}
答案 2 :(得分:0)
感谢大家的提示;没有一个答案很有效。我最终使用了......
ArrayList<String> javalist = new ArrayList<String>();
ZipFile zip = new ZipFile(jarName);
for (Enumeration list = zip.entries(); list.hasMoreElements(); )
{
ZipEntry entry = (ZipEntry) list.nextElement();
if(entry.getName().endsWith(".java"))
{
//below line is the answer
javalist.add(entry.getName());
}
JOptionPane.showMessageDialog(null, jarName + "\n" + javalist);
}