3

我想知道是否有可能从ZipEntry...中获取简单的名称

当我调用getName()Entry 时,我得到一个完整的路径名。

我只需要获取文件名。

在这里,我需要获取简单名称而不是带有根的全名。

public class ZipFileSample {

    public static void main(String[] args) {

        try {
            ZipFile zip = new ZipFile(new File("C:\\Users\\Levi\\Desktop\\jessica.zip"));

            for (Enumeration e = zip.entries(); e.hasMoreElements(); ) {
                ZipEntry entry = (ZipEntry) e.nextElement();
                //Here I need to get the simple name instead the full name with its root
                System.out.println(entry.getName());
            }

        } catch (ZipException e) {
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();

        }

    }
}
4

2 回答 2

7

怎么样

new File(entry.getName()).getName()
于 2012-10-05T14:19:25.980 回答
2

您可以尝试使用以下代码(可能您需要对 java.lang.StringIndexOutOfBoundsException 采取一些预防措施)。如果您知道扩展名,您也可以强制执行一些检查

        try {
            ZipFile zip = new ZipFile(new File("F:\\OTHERS\\classes.zip"));
            for (Enumeration e = zip.entries(); e.hasMoreElements(); ) {
                ZipEntry entry = (ZipEntry) e.nextElement();
                //Here I need to get the simple name instead the full name with its root
                String name =entry.getName();
                //if( name.endsWith(".java"))
//              {
                    name = name.substring(name.lastIndexOf("/")+1,name.length() );
                    System.out.println(name );
//              }
            }

        } catch (ZipException e) {
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();

        }
于 2012-10-05T15:44:51.167 回答