71_常用类_file类_打印目录树状结构_递归算法_(枚举补充)

时间:2022-05-19 22:11:43

树状结构展现文件结构

  • 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹),利用File类和递归知识,实现树状结构的展示,代码如下:
import java.io.File;
import java.io.IOException;
public class TestFile {
/**
* 1.File文件类的常见构造器,常见方法的使用
* 2.递归:
* 概念:在java代码中出现,出现本身调用自己的现象,我们称之为递归。
* 组成:递归体;递归头。
* 注意事项:
* 递归若没有递归头,递归将是死递归了。
*/

public static void main(String[] args) {
File f = new File("d:/src3");
printFile(f, 0);
}

static void printFile(File file, int level) {
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File temp : files) {
printFile(temp, level + 1);
}
}
}
}

枚举

  • 枚举类型:
    • 只能够取特定值中的一个
    • 使用enum关键字
  • 所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final的。可以直接通过枚举类型名直接使用它们。)

强烈建议当你需要定义一组常量时,使用枚举类型
尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要引入复杂性!

  • 代码
public class TestEnum {
public static void main(String[] args) {
Week ww = Week.FRIDAY;// 定义一个枚举类型对象
Week ww2 = Week.values()[2];// 返回每局的第三个元素!!
System.out.println(ww2);
String temp = testEnum(Week.SUNDAY);
System.out.println(temp);
}

static String testEnum(Week w) {
switch (w) {
case SUNDAY:
return "日";
case MONDAY:
return "一";
case TUESDAY:
return "二";
case WEDNESDAY:
return "三";
case THURSDAY:
return "四";
case FRIDAY:
return "五";
case SATURDAY:
return "六";
}
return "";
}

}

enum Week {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}