(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~
Java SE 090 递归作业详解
1.作业要求
给定任意一个目录,以树形方式展现出该目录中的所有子目录和文件。另外,在展现的时候,将目录排列在上面,文件排在下面。每一层要加上缩进。
2.代码实现
package com.javareview.io.file;
import java.io.File;
import java.util.ArrayList;
/**
* 给定任意一个目录,以树形方式展现出该目录中的所有子目录和文件。另外,在展现的时候,将目录排列在上面,文件排在下面。每一层要加上缩进。
*/
public class ListDirAllInfo {
// 用于判断文件目录或文件所处的层次
private static int time;
// 递归的方法
public static void deepList(File file) {
// 如果文件夹下面是文件,或者文件夹是一个空文件夹,就不在显示了
// 否则表示当前这个文件路径本身是一个目录,而且这个目录里面还有子目录或文件。
if (file.isFile() || 0 == file.listFiles().length) {
return;
} else {
// 得到该目录的子目录或文件,用File数组存放
File[] files = file.listFiles();
files = sort(files);
for (File f : files) {
StringBuffer output = new StringBuffer();
if (f.isFile()) {
output.append(getTabs(time));
output.append(f.getName());
} else {
output.append(getTabs(time));
output.append(f.getName());
output.append("\\");
}
System.out.println(output.toString());
if (f.isDirectory()) {
time++;
deepList(f);
time--;
}
}
}
}
// 整理文件数组,使得目录排在文件之前
public static File[] sort(File[] files) {
ArrayList<File> sorted = new ArrayList<File>();
// 寻找到所有的目录
for (File f : files) {
if (f.isDirectory()) {
sorted.add(f);
}
}
// 寻找到所有的文件
for (File f : files) {
if (f.isFile()) {
sorted.add(f);
}
}
return sorted.toArray(new File[files.length]);
}
// 判断需要加多少tab的方法
public static String getTabs(int time) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < time; i++) {
buffer.append("\t");
}
return buffer.toString();
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
new ListDirAllInfo().deepList(new File("E:/03_gdc/document"));
}
}