package string.itcastio; import java.io.File; /* * 列出指定目录下文件或者文件夹,包含子目录中的内容 * 也就是列出目录下所有内容 * 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可 * 在列出过程中出现的还是目录的话,还可以再次调用本功能 * 也就是函数自身调用自身。 * 这种表现形式,或者编程手法,称为递归。 * 递归要注意: * 1.限定条件 * 2.要注意递归的次数。尽量避免内存溢出。 */ public class FileDemo3 { public static void main(String[] args) { File file = new File("F:\\javaweb"); // showDir(file); // System.out.println(getSum(100)); showDirlevel(file, 0); } public static String getLevel(int level) { StringBuilder sb = new StringBuilder(); sb.append("|--"); for (int i = 0; i < level; i++) { sb.insert(0, "| "); } return sb.toString(); } /** * 带层次的文件递归显示 * * @param file * @param level */ public static void showDirlevel(File file, int level) { level++; File[] files = file.listFiles(); for (File f : files) { if (f.isDirectory()) { showDirlevel(f, level); } else { System.out.println(getLevel(level) + f.getName()); } } } /** * 查看目录下的所有文件 * * @param file */ public static void showDir(File file) { File[] files = file.listFiles(); for (File f : files) { if (f.isDirectory()) { showDir(f); } System.out.println(f.getName()); } } /** * 整数相加 * * @param sum * @return */ public static int getSum(int sum) { if (sum == 1) { return sum; } return sum + getSum(sum - 1); } }