java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
2016-05-21 11:07
861 查看
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[i].isDirectory()) {
System.out.println(createPrintStr(list[i].getName(), fileLevel));
fileLevel ++;
// 递归子目录
readFile(list[i].getPath());
fileLevel --;
} else {
System.out.println(createPrintStr(list[i].getName(), fileLevel));
}
}
}
public static void main(String[] args) {
ReadDirectory rd = new ReadDirectory();
String dirPath = "E:\\openstack学习资料\\云计算实战";
rd.printDir(dirPath);
rd.readFile(dirPath);
}
}
结果:
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[i].isDirectory()) {
System.out.println(createPrintStr(list[i].getName(), fileLevel));
fileLevel ++;
// 递归子目录
readFile(list[i].getPath());
fileLevel --;
} else {
System.out.println(createPrintStr(list[i].getName(), fileLevel));
}
}
}
public static void main(String[] args) {
ReadDirectory rd = new ReadDirectory();
String dirPath = "E:\\openstack学习资料\\云计算实战";
rd.printDir(dirPath);
rd.readFile(dirPath);
}
}
结果:
相关文章推荐
- Java静态的应用
- android studio 与eclipse创建命名空间时候的区别
- hdu 1042 N! java大数及判断文件末尾
- Java 23种设计模式之抽象工厂模式详解
- java中代码执行顺序
- java 杭电1058Humble Numbers
- SpringMVC接收ajax传送的参数,后台显示乱码
- Java基础第四天
- 消息模式Toast.makeText的几种常见用法
- 消息模式Toast.makeText的几种常见用法
- java实现双向链表
- 记忆化搜索路径_Java实现
- JAVA——Runtime对象
- JavaWeb的学习总结(三)— 过滤器(Filter)
- Struts2之文件上传与下载
- Java技术大牛之路
- Eclipse常用快捷键
- eclipse properties 插件
- eclipse properties 插件
- 基础Java语言编程练习题