通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
当初在开始接触Java时 学习File部分的一个小练习 挺有意思
一开始是通过看 北京圣思园 张龙老师的视频开始学校java的,必须强烈推荐,真很棒。
功能实现:主要实现以树形方式展现出该目录中的所有子目录和文件。 另外, 在展现的时候将目录排在上面,文件排在下面。每一层要加上缩进。 文件是jre6文件夹,我想这文件夹就不用我说什么了。换上自己的文件路径就可以了。
- import java.io.File;
- public class FileTest2
- {
- public static int count = 0;
- public static void parse(File[] files)
- {
- if(files.length == 0)
- {
- FileTest2.count--;
- System.out.println();
- return;
- }
- else
- {
- for(File f : files)
- {
- if(f.isDirectory())
- {
- FileTest2.count++;
- for(int i = 1; i <= FileTest2.count; i++)
- {
- System.out.print("\t");
- }
- System.out.println(f.getName());
- File[] files2 = f.listFiles();
- FileTest2.parse(files2);
- }
- }
- for(File f : files)
- {
- if(!f.isDirectory())
- {
- for(int i = 0; i <= FileTest2.count; i++)
- {
- System.out.print("\t");
- }
- System.out.println(f.getName());
- }
- }
- FileTest2.count--;
- }
- }
- public static void main(String[] args)
- {
- File file = new File("C:\\Program Files\\Java\\jre6");
- File[] files = file.listFiles();
- FileTest2.parse(files);
- }
- }
- **************************第二种****************************************
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递归思想实现以树形方式展现出该目录中的所有子目录和文件的更多相关文章
- Java使用递归找出某目录下的所有子目录以及子文件
/* 使用递归找出某目录("C:\\JavaProducts")下的所有子目录以及子文件 */ import java.util.*; import java.io.*; publ ...
- Java递归应用:输出树形菜单
转自:https://blog.csdn.net/zhangzeyuaaa/article/details/24574769
- VC/MFC 下 递归遍历目录下的所有子目录及文件
在MFC下要实现文件夹的递归遍历,可用CFileFind类,依次读取文件夹下的子文件夹和文件,并判断通过判断是文件夹还是文件来决定递归遍历.递归遍历代码如下: /******************* ...
- Java编程思想(前十章)
Java编程思想 有C++编程基础的条件下, 前10章可以快速过一下,都是基本语法,不需要花太多时间. 着重中后段的一些章节,类型信息.泛型.容器.IO.并发等. 中文翻译版 阅读地址 对于一个架构师 ...
- Python算法——递归思想
编程语言在构建程序时的基本操作有:内置数据类型操作.选择.循环.函数调用等,递归实际属于函数调用的一种特殊情况(函数调用自身),其数学基础是数学归纳法.递归在计算机程序设计中非常重要,是许多高级算法实 ...
- Java编程思想 4th 第2章 一切都是对象
Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...
- Java:多线程概述与创建方式
目录 Java:多线程概述与创建方式 进程和线程 并发与并行 多线程的优势 线程的创建和启动 继承Thread类 start()和run() 实现Runnable接口 实现Callable接口 创建方 ...
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
- Python正则匹配递归获得给出目录下的特定类型的文件小技巧
需求是酱的: 输入一个目录,这个目录包含检测目录的必备信息但不准确需要获得后加工一下,如给出目录:C:\Program Files\Common Files\DESIGNER,需要检测的目录是:C:\ ...
随机推荐
- [模板][P4238]多项式求逆
NTT多项式求逆模板,详见代码 #include <map> #include <set> #include <stack> #include <cmath& ...
- Java中Iterator(迭代器)实现原理
在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结 ...
- java第一次课
package java第一周学习2; 达达20173435 信1705-2 import java.text.SimpleDateFormat; import java.util.Date; pub ...
- 定位bug的方法总结
把问题聚焦到某一个点上,而不是焦躁的瞎搞,这样效率极低 1,看改动的地方 2,看文档:官方文档或者接口文档. 3,google不到的话,也试试百度中文搜索. 4,看格式反常的地方 5,反思 反常的地方 ...
- SparkStreaming “Could not read data from write ahead log record” 报错分析解决
# if open wal org.apache.spark.SparkException: Could not read data from write ahead log record FileB ...
- JAVA自学笔记11
JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...
- Vue 2.3、2.4 知识点小结
2.3 style 多重值: <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }">< ...
- hql里面union和union all的区别
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复. 注意,原来表里面的重复行也会被压缩. Union ...
- SQLite在.NET中自适应32位/64位系统
如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不同了. SQLite的.NET开发包来自是System.D ...
- 如何禁用package-lock
因为 package-lock.json是自动生成的,可以配置 npm 来避免经常需要手动删除这个文件. 在当前项目禁用 package-lock.json 控制台下输入 echo 'package- ...