java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

import java.io.File;

public class ReadDirectory {
        // 文件所在的层数
        private int fileLevel;

        /**
         * 生成输出格式
         * @param name 输出的文件名或目录名
         * @param level 输出的文件名或者目录名所在的层次
         * @return 输出的字符串
         */
        public String createPrintStr(String name, int level) {
                // 输出的前缀
                String printStr = "";
                // 按层次进行缩进
                for (int i = 0; i < level; i ++) {
                        printStr  = printStr + "  ";
                }
                printStr = printStr + "- " + name;
                return printStr;
        }

        /**
         * 输出初始给定的目录
         * @param dirPath 给定的目录
         */
        public void printDir(String dirPath){
                // 将给定的目录进行分割
                String[] dirNameList = dirPath.split("\\\\");
                // 设定文件level的base
                fileLevel = dirNameList.length;
                // 按格式输出
                for (int i = 0; i < dirNameList.length; i ++) {
                        System.out.println(createPrintStr(dirNameList[i], i));
                }
        }

        /**
         * 输出给定目录下的文件,包括子目录中的文件
         * @param dirPath 给定的目录
         */
        public void readFile(String dirPath) {
                // 建立当前目录中文件的File对象
                File file = new File(dirPath);
                // 取得代表目录中所有文件的File对象数组
                File[] list = file.listFiles();
                // 遍历file数组
                for (int i = 0; i < list.length; i++) {
                        if (list.isDirectory()) {
                                System.out.println(createPrintStr(list.getName(), fileLevel));
                                fileLevel ++;
                                // 递归子目录
                                readFile(list.getPath());
                                fileLevel --;
                        } else {
                                System.out.println(createPrintStr(list.getName(), fileLevel));
                        }
                }
        }

        public static void main(String[] args) {
                ReadDirectory rd = new ReadDirectory();
                String dirPath = "D:\\有道词典";
                rd.printDir(dirPath);
                rd.readFile(dirPath);
        }
}

  

输出结果如下:

时间: 2024-10-07 12:28:34

java遍历给定目录,树形结构输出所有文件,包括子目录中的文件的相关文章

Atitit. C# java 的api 目录封装结构映射总结

Atitit. C#  java 的api 目录封装结构映射总结 C# java ref System.Reflection System.Type, java.lang.ref concurrent thread System.Threading java.lang.Thread collection System.collection java.util.collection Io Sys.io sys.text sys.xml sys.data.sql sys.data sys.web s

Java递归算法构造JSON树形结构

1.前言 最近项目中有一个需求,数据库中的菜单表是一个常见的id-pid结构,需要把它构建成树形的JSON格式发送给第三方,写出来之后感觉也是很简单的,核心代码只有5行,重要的是思路要明确,这里把源码分享给大家. 工程里面使用了json-lib.jar这个包,作用是将List序列化成JSON. 2.源码 package com.agileai.esb.smc.domain; import java.util.*; import net.sf.json.JSONArray; public clas

【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是参考: http://stackoverflow.com/questions/2116260/logging-to-a-file-on-android 去看看: http://code.google.com/p/android-logging-log4j/ [[折腾过程] 1.去: https://

获取指定目录及子目录中所有文件列表

#region 获取指定目录及子目录中所有文件列表 /// <summary> /// 获取指定目录及子目录中所有文件列表 /// </summary> /// <param name="directoryPath">指定目录的绝对路径</param> /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字

Java 遍历指定目录及子目录下的文件

/** * 遍历指定目录及子目录下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定目录 * @param collector 符合条件的结果添加到此List<File>中 * @param pathInclude 路径中包含指定的字符串 * @param fileNameInclude 文件名(不包含扩展名)中包含指定的字符串 * @param extnEquals 文件扩展名为指定字符串 *

Java读取指定目录下的所有文件(子目录里的文件也可递归得到)

1 import java.io.File; 2 3 public class ReadFile { 4 5 public static void main(String[] args) { 6 7 // path是指定目录的绝对路径 8 String path = "/Users/tonychan/Workspaces/MyEclipse 2017 CI/Zhangjiajie/WebRoot/pics"; 9 getFile(path); 10 11 } 12 13 // 给定目录

Java实现读取文件夹下(包括子目录)所有文件的文件名

在编程的过程中,经常会用到对文件的读写操作等.比如,找出某一个文件夹下的所有文件名等. 下面的程序给出了,获取某一给定文件夹下所有文件的绝对路径的程序.可以作为某一个模块,在需要的时候直接使用. package src; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStrea

获取指定目录下的所有文件名,包括子目录函数

获取指定目录下所有文件名,这是一个一个目录遍历的方法: function TPathWatch.FList(ASourFile: string): TStrings; // 查找子目录 AStrings存放查找出路径, ASourceFile要查找的目录 var sour_path, sour_file: string; // 源路径,源文件名类型 TmpList: TStringList; FileRec, subFileRec: TSearchrec; i: Integer; begin R

Java 遍历某个目录

import java.io.File; import java.io.IOException; public class DirErgodic { public static void find(String pathName) throws IOException{ //获取pathName的File对象 File dirFile = new File(pathName); //判断该文件或目录是否存在,不存在时在控制台输出提醒 if (!dirFile.exists()) { System