递归应用:遍历文件夹

public class FileList {
    public static void main(String[] args) {
        printFiles(new File("d:/Program Files"));
    }

    public static void printFiles(File file) {
        if (file.isDirectory()) { //判断文件是不是文件夹
            File fileArray[] = file.listFiles();
            for (int i = 0; i < fileArray.length; i++) {
                System.out.println(fileArray[i].getName());
                if (fileArray[i].isDirectory()) { //判断每个文件是不是文件夹
                    printFiles(fileArray[i]);//递归
                }
            }
        } else {
            System.out.println(file.getName());

        }
    }
}

控制台输出如下:

下面对代码进行一些优化让输出的文件目录变得更清晰:

public class FileList {
    public static void main(String[] args) {
        printFiles(new File("d:/Program Files"),1);
    }

    public static void printFiles(File file,int tab) {
        if (file.isDirectory()) { //判断文件是不是文件夹
            File fileArray[] = file.listFiles();
            for (int i = 0; i < fileArray.length; i++) {
                for (int j = 0; j < tab; j++) {
                    System.out.print("|--");
                }
                System.out.println(fileArray[i].getName());
                if (fileArray[i].isDirectory()) { //判断每个文件是不是文件夹
                    printFiles(fileArray[i],tab+1);//递归
                }
            }
        } else {
            System.out.println(file.getName());

        }
    }
}

时间: 2024-10-27 05:37:00

递归应用:遍历文件夹的相关文章

非递归方式遍历文件夹,取得所有子目录和文件的文件名和大小

void BuildTree() { FileNode nodeD; nodeD.fileName = _T("D"); nodeD.fileSize = 15; FileNode nodeE; nodeE.fileName = _T("E"); nodeE.fileSize = 10; FileNode nodeF; nodeF.fileName = _T("F"); nodeF.fileSize = 20; FileNode nodeG; n

linux文件夹操作及递归遍历文件夹

文件夹相关函数介绍 //mkdir 函数创建文件夹 #include <sys/stat.h> #include <sys/types.h> int mkdir(const char *pathname, mode_t mode); //rmdir 删除文件夹 #include <unistd.h> int rmdir(const char *pathname); //dopendir/fdopendir  //打开文件夹 DIR是一个结构体,是一个内部结构,用来存储读

递归的一些应用(一)遍历文件夹

函数的递归调用 递归的含义 递归其实也只是一种算法上的描述,不是一种新的语法! 有时候,我们解决问题的时候,会遇到这种情况,当我们把一个大的问题按照某种解决方案分成若干个小的问题的时候,发现这些小问题的解决方案其实和刚才大问题的解决方案又是一样的! 典型的,比如:求阶乘! 10! = 10 * 9! 9! =  9 * 8! 8! = 8 * 7! …… 语法上,函数的递归调用,就是函数在执行的过程中自己又调用自己! 递归的两个要点: 1,  递归的出口:就是指什么时候停止递归调用 2,  递归

Linux下的C程序,遍历文件夹并统计其中各个类型文件所占百分比

递归遍历一个目录下的所有文件和文件夹,统计各个类型文件所占的百分比 程序代码a.cpp(编译命令:g++ a.cpp -o a) #include <stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <dirent.h> #include <string.h> stru

Java遍历文件夹下的所以文件

利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重命名操作 1 package com.zhang.test; 2 3 import java.io.File; 4 5 public class getfilepath { 6 7 public static void main(String[] args) { 8 getDirectory(new

java 遍历文件夹里的文件

Java遍历文件夹的2种方法: A.不使用递归: import java.io.File; import java.util.LinkedList; public class FileSystem { public static void main(String[] args) { long a = System.currentTimeMillis(); LinkedList list = new LinkedList(); File dir = new File("c:\\java\\&quo

递归实现显示目标文件夹的所有文件和文件夹,并计算目标文件夹的大小

递归的一个典型应用就是遍历目标文件夹,把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算目标文件夹的总大小. 1: class Program 2: { 3: static void Main(string[] args) 4: { 5: Console.WriteLine("输入目标文件夹"); 6: string path = Console.ReadLine(); 7: FindFoldersAndFiles(path); 8: Console.WriteLine(&q

从头认识java-16.2 遍历文件夹

这一章节我们讨论一下遍历文件夹. 1.通过递归遍历,遍历项目的根目录 package com.ray.ch16; import java.io.File; public class Test { public static void showAllFiles(String path) { File root = new File(path); File[] files = root.listFiles(); for (File file : files) { if (file.isDirecto

java遍历文件夹

使用递归: import java.io.File; import java.util.ArrayList; public class FileSystem1 { private static ArrayList filelist = new ArrayList(); public static void main(String[] args) { long a = System.currentTimeMillis(); refreshFileList("C:/Users/shibin/Desk

JAVA 遍历文件夹下的所有文件

JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = 0, folderNum = 0; File file = new File(path); if (file.exists()) { LinkedList<File> list = new LinkedList<File>(); File[] files = file.listFile