Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归显示根文件夹下的所有文件和每个文件的目录_Java - Fatal编程技术网

Java 递归显示根文件夹下的所有文件和每个文件的目录

Java 递归显示根文件夹下的所有文件和每个文件的目录,java,Java,我想递归地显示根目录下的所有文件和每个文件的目录 输出应该如下所示 filename->包含该文件的目录 比如说 filename.jpg-->c:\workspace filename.jpg位于c:\workspace中,即:路径为c:\workspace\filename.txt每个目录中都有许多文件请记住,在此解决方案中将覆盖同名文件名(您需要一个映射来允许此操作): 您可以使用: 你试过什么?java.io.File类拥有实现此功能所需的一切。查看第一个google hit我只想显示特

我想递归地显示根目录下的所有文件和每个文件的目录

输出应该如下所示

filename->包含该文件的目录

比如说 filename.jpg-->c:\workspace


filename.jpg位于c:\workspace中,即:路径为c:\workspace\filename.txt每个目录中都有许多文件

请记住,在此解决方案中将覆盖同名文件名(您需要一个
映射来允许此操作):

您可以使用:


你试过什么?java.io.File类拥有实现此功能所需的一切。查看第一个google hit我只想显示特定扩展名的文件我如何才能做到这一点?
public static void main(String[] args) throws Exception {

    Map<String, File> map = getFiles(new File("."));

    for (String name : map.keySet())
        if (name.endsWith(".txt")) // display filter
            System.out.println(name + " ---> " + map.get(name));
}

private static Map<String, File> getFiles(File current) {

    Map<String, File> map = new HashMap<String, File>();

    if (current.isDirectory()) { 
        for (File file : current.listFiles()) {
            map.put(file.getName(), current);
            map.putAll(getFiles(file));
        }
    }

    return map;
}
test1.txt ---> .
test2.txt ---> .\doc
test3.txt ---> .\doc\test
public static void main(String[] args) throws IOException {
    File rootDir = new File("/home/marco/tmp/");
    Collection<File> files = FileUtils.listFiles(rootDir, new String[] {
            "jpeg", "log" }, true);
    for (File file : files) {
        String path = file.getAbsolutePath();
        System.out.println(file.getName() + " -> "
                + path.substring(0, path.lastIndexOf('/')));
    }
}
visicheck.jpeg -> /home/marco/tmp
connettore.jpeg -> /home/marco/tmp
sme2.log -> /home/marco/tmp/sme2_v2_1/log
davmail_smtp.jpeg -> /home/marco/tmp