(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~
Java SE 088 递归深度详解_2
1.使用递归删除文件或文件夹
package com.javareview.recursion;
import java.io.File;
public class FileTest {
/**
* 使用递归删除一个目录下的所有文件或文件夹
* @param file
*/
public static void deleteAll(File file) {
// 如果目录下是文件,则可直接删除,如果文件下的目录是空的,则也可以直接删除
if (file.isFile() || file.list().length == 0) {
file.delete();
} else {
File[] files = file.listFiles();
for (File f : files) {
// 删除当前目录下的文件或目录
deleteAll(f);
// 将当前目录自己删除
file.delete();
}
}
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
new FileTest().deleteAll(new File("D:\\360Downloads"));
}
}
2.作业
给定任意一个目录,以树形方式展现出该目录中的所有子目录和文件。另外,在展现的时候,将目录排列在上面,文件排在下面。每一层要加上缩进。
package com.javareview.recursion;
import java.io.File;
import java.util.ArrayList;
public class ListAllTest {
// 用于判断文件目录或文件所处的层次
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 ListAllTest().deepList(new File("D:/download"));
}
}
ic-access")
public static void main(String[] args) {
new ListAllTest().deepList(new File("D:/download"));
}
}