通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件

时间:2023-01-25 00:13:00

当初在开始接触Java时  学习File部分的一个小练习  挺有意思

一开始是通过看 北京圣思园 张龙老师的视频开始学校java的,必须强烈推荐,真很棒。

功能实现:主要实现以树形方式展现出该目录中的所有子目录和文件。 另外, 在展现的时候将目录排在上面,文件排在下面。每一层要加上缩进。 文件是jre6文件夹,我想这文件夹就不用我说什么了。换上自己的文件路径就可以了。

  1. import java.io.File;
  2. public class FileTest2
  3. {
  4. public static int count = 0;
  5. public static void parse(File[] files)
  6. {
  7. if(files.length == 0)
  8. {
  9. FileTest2.count--;
  10. System.out.println();
  11. return;
  12. }
  13. else
  14. {
  15. for(File f : files)
  16. {
  17. if(f.isDirectory())
  18. {
  19. FileTest2.count++;
  20. for(int i = 1; i <= FileTest2.count; i++)
  21. {
  22. System.out.print("\t");
  23. }
  24. System.out.println(f.getName());
  25. File[] files2 = f.listFiles();
  26. FileTest2.parse(files2);
  27. }
  28. }
  29. for(File f : files)
  30. {
  31. if(!f.isDirectory())
  32. {
  33. for(int i = 0; i <= FileTest2.count; i++)
  34. {
  35. System.out.print("\t");
  36. }
  37. System.out.println(f.getName());
  38. }
  39. }
  40. FileTest2.count--;
  41. }
  42. }
  43. public static void main(String[] args)
  44. {
  45. File file = new File("C:\\Program Files\\Java\\jre6");
  46. File[] files = file.listFiles();
  47. FileTest2.parse(files);
  48. }
  49. }
  50. **************************第二种****************************************
  51.  1 /*
    2 使用递归找出某目录("C:\\JavaProducts")下的所有子目录以及子文件
    3 */
    4
    5 import java.util.*;
    6 import java.io.*;
    7
    8 public class FileRecursionPrintDemo{
    9 public static void main(String[] args){
    10 List<String> paths = new ArrayList<String>();
    11 paths = getAllFilePaths(new File("C:\\JavaProducts"),paths);
    12 for(String path:paths){
    13 System.out.println(path);
    14 }
    15 }
    16
    17 private static List<String> getAllFilePaths(File filePath,List<String> filePaths){
    18 File[] files = filePath.listFiles();
    19 if(files == null){
    20 return filePaths;
    21 }
    22 for(File f:files){
    23 if(f.isDirectory()){
    24 filePaths.add(f.getPath());
    25 getAllFilePaths(f,filePaths);
    26 }else{
    27 filePaths.add(f.getPath());
    28 }
    29 }
    30 return filePaths;
    31 }
    32 }

通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件的更多相关文章

  1. Java使用递归找出某目录下的所有子目录以及子文件

    /* 使用递归找出某目录("C:\\JavaProducts")下的所有子目录以及子文件 */ import java.util.*; import java.io.*; publ ...

  2. Java递归应用:输出树形菜单

    转自:https://blog.csdn.net/zhangzeyuaaa/article/details/24574769

  3. VC&sol;MFC 下 递归遍历目录下的所有子目录及文件

    在MFC下要实现文件夹的递归遍历,可用CFileFind类,依次读取文件夹下的子文件夹和文件,并判断通过判断是文件夹还是文件来决定递归遍历.递归遍历代码如下: /******************* ...

  4. Java编程思想&lpar;前十章&rpar;

    Java编程思想 有C++编程基础的条件下, 前10章可以快速过一下,都是基本语法,不需要花太多时间. 着重中后段的一些章节,类型信息.泛型.容器.IO.并发等. 中文翻译版 阅读地址 对于一个架构师 ...

  5. Python算法——递归思想

    编程语言在构建程序时的基本操作有:内置数据类型操作.选择.循环.函数调用等,递归实际属于函数调用的一种特殊情况(函数调用自身),其数学基础是数学归纳法.递归在计算机程序设计中非常重要,是许多高级算法实 ...

  6. Java编程思想 4th 第2章 一切都是对象

    Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...

  7. Java:多线程概述与创建方式

    目录 Java:多线程概述与创建方式 进程和线程 并发与并行 多线程的优势 线程的创建和启动 继承Thread类 start()和run() 实现Runnable接口 实现Callable接口 创建方 ...

  8. 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

    ---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...

  9. Python正则匹配递归获得给出目录下的特定类型的文件小技巧

    需求是酱的: 输入一个目录,这个目录包含检测目录的必备信息但不准确需要获得后加工一下,如给出目录:C:\Program Files\Common Files\DESIGNER,需要检测的目录是:C:\ ...

随机推荐

  1. 老王讲自制RPC框架&period;&lpar;四&period;序列化与反序列化)

    #(序列化) 在实际的框架中,真正影响效率的就是数据的传输方式,以及传输的准备,或者说是tcp与http,序列化.当然要想提高整个框架的效率,需要采用一种高效的序列化 框架比如流行的protostuf ...

  2. express&plus;gulp构建项目(一)项目目录结构

    express是基于nodejs平台的web框架,它可以让我们快速开发出web引用.而gulp是一种自动构建工具,非常强大,有了它,能帮我们完成很多繁琐的工作,例如,静态文件的压缩,为静态文件加上哈希 ...

  3. 一个基于POP3协议进行邮箱账号验证的类

    最近老陈要针对企业邮箱做一些开发,以对接企业OA神马的,但企业邮箱唯独没有开放账号密码验证功能,很恼火!不得已,翻出早些年的Asp代码改编成了C#类,实现了一个C#下的通过POP3协议进行邮箱账号验证 ...

  4. OpenJudge计算概论-错误探测

    /*======================================================================== 错误探测 总时间限制: 1000ms 内存限制: ...

  5. 用Windbg来看看CLR的JIT是什么时候发生的

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Windbg来看看CLR的JIT是什么时候发生的.

  6. The fundamental knowledge of Node JS&period;

    D3 JSJava scirpt is an awesome language for Internface Design.All Obejcts in JavaScirpt could be use ...

  7. 一个用于每一天JavaScript示例-使用缓存计算(memoization)为了提高应用程序性能

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. Retrofit2&period;0 ,OkHttp3完美同步持久Cookie实现免登录&lpar;二&rpar;

    原文出自csdn: http://blog.csdn.net/sk719887916/article/details/51700659: 通过对Retrofit2.0的<Retrofit 2.0 ...

  9. nslookup get public&sol;external IP

    nslookup myip.opendns.com resolver1.opendns.com Server: resolver1.opendns.comAddress: 208.67.222.222 ...

  10. 深谈CDQ分治

    关于CDQ分治我想我自己做过前面的题应该会了这种思想了吧,然后我是真的“会了”. 我想针对于偏序问题我是会了,我现在只会三维偏序了,脑子都是疼的. 但是 CDQ分治最主要的还是基于时间方面的分治思想, ...