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

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

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

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

[java] view plain copy

  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 }
时间: 2024-08-25 08:26:46

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

Java - 递归思想

/** * 简单实现阶乘 * @param n * @return */ public static double getFactorial(double n) { for(double i = n - 1;i > 0;i-- ){ n *= i; } return n; } /** * 求阶乘 * n!=n*(n-1)*(n-2)*...*1 * @param n * @return */ public static int getFactorialValue(int n){ if(n ==

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

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

java递归思想

所谓递归,就是自己间接或者直接地自己. 递归需注意的三个条件: 1.边界条件 2.递归前进段 3.递归返回段 当边界条件不满足时,则递归前进 当边界条件满足时,则递归返回 这有个小例子: public class Demo { public static void main(String args[]) { toBin(6); } public static void toBin(int num) { if(num>0) { toBin(num/2); System.out.println(nu

Java编程思想---第十二章 通过异常处理错误(中)

第十二章  通过异常处理错误(中) 12.4 创建自定义异常 我们不必拘泥于Java中已有的异常类型,Java提供的异常体系不可能预见所有的错误,所以可以自己定义异常类来表示程序中可能会遇到的特定问题:要自己定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承,建立新的异常类最简单的方法就是让编译器为你产生默认构造器,所以这几乎不用写多少代码: class SimpleException extends Exception { } public class InheritingEx

Python算法——递归思想

编程语言在构建程序时的基本操作有:内置数据类型操作.选择.循环.函数调用等,递归实际属于函数调用的一种特殊情况(函数调用自身),其数学基础是数学归纳法.递归在计算机程序设计中非常重要,是许多高级算法实现的基础 编写递归程序的几个要点: 1.终止条件:最简单情况(避免无限循环) 2.递归公式:相邻两次调用间的关系(递归算法核心) 3.忽略调用具体细节:假设所有调用都会达到终止条件(从思想上接受递归算法的关键) 4.效率:递归算法有时效率较低,可考虑其他更高效的实现方式(见问题5) 下面我们通过几个

Java编程思想(前十章)

Java编程思想 有C++编程基础的条件下, 前10章可以快速过一下,都是基本语法,不需要花太多时间. 着重中后段的一些章节,类型信息.泛型.容器.IO.并发等. 中文翻译版 阅读地址 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. 对象入门 类的继承一般使用'统一标记法'(UML图)来画继承的图. 在面向对象的程序中, 通常要用到上溯造型(向上转型)的技术, 需要动态绑

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

Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情在类对象中完成. 在Java中,使用引用来操纵对象,在Java编程思想的第四版中,使用的术语是"引用(reference)",之前有读过Java编程思想第三版,在第三版中,使用的术语是"句柄(handle)",事实上,我觉得第三版的术语"句柄"更加形象传神,就像你用一个

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

---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或文件夹封装成对象 (2)方便于对“文件”与“文件夹属性信息”进行操作 (3)File对象,可以作为参数传递给流的构造函数 (二)构造方法 * 通过File的构造函数创建File对象 方式1:File f = new File("c:\\a.txt"); 方式2:File f2 = newF

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

需求是酱的: 输入一个目录,这个目录包含检测目录的必备信息但不准确需要获得后加工一下,如给出目录:C:\Program Files\Common Files\DESIGNER,需要检测的目录是:C:\Program Files\Common Files\System,即从给出的目录中获取前面的信息,后面的补上的目录(System)是指定的.从E:\res\tmp目录中检测xml文件,返回xml文件的目录 代码如下: 1 import os 2 import re 3 pathlist = []