无法获得endsWith(“。java”)工作

时间:2013-12-27 15:01:34

标签: java

我循环遍历目录中的所有.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);

我希望这是一种合成愚蠢的东西。我已经尝试了几个小时的可能性。有人可以帮我解决这个问题吗?

3 个答案:

答案 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);
}