Here you can find the source of getChildren(URL url)
public static List<String> getChildren(URL url)
//package com.java2s; /* Chronos - Game Development Toolkit for Java game developers. The * original source remains:// ww w . ja v a 2 s.c o m * * Copyright (c) 2013 Miguel Gonzalez http://my-reality.de * * This source is provided under the terms of the BSD License. * * Copyright (c) 2013, Chronos * All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * * Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * Neither the name of the Chronos/my Reality Development nor the names of * its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. */ import java.io.File; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class Main { /** * Takes a given url and creates a list which contains all children of the * given url. (Works with Files and JARs). */ public static List<String> getChildren(URL url) { List<String> result = new ArrayList<String>(); if ("file".equals(url.getProtocol())) { File file = new File(url.getPath()); if (!file.isDirectory()) { file = file.getParentFile(); } addFiles(file, result, file); } else if ("jar".equals(url.getProtocol())) { try { JarFile jar = ((JarURLConnection) url.openConnection()).getJarFile(); Enumeration<JarEntry> e = jar.entries(); while (e.hasMoreElements()) { JarEntry entry = e.nextElement(); result.add(entry.getName()); } } catch (IOException e) { // Do nothing } } return result; } /** * Collects all children of the given file into the given result list. The * resulting string is the relative path from the given reference. */ private static void addFiles(File file, List<String> result, File reference) { if (file == null || !file.exists() || !file.isDirectory()) { return; } for (File child : file.listFiles()) { if (child.isDirectory()) { addFiles(child, result, reference); } else { String path = null; while (child != null && !child.equals(reference)) { if (path != null) { path = child.getName() + "/" + path; } else { path = child.getName(); } child = child.getParentFile(); } result.add(path); } } } }