递归练习
练习一
import java.io.File; import java.util.Scanner; public class test1 { public static void main(String[] args) { //File dir=getDir(); //System.out.println(getFileLength(dir)); File dir =new File("D:\java\2018"); System.out.println(dir.length()); } public static File getDir(){ Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径"); //定义一个无线循环 while(true){ String line =sc.nextLine(); File dir =new File(line); //对File对象判断 if(!dir.exists()){ System.out.println("你录入的文件夹路径不存在,请输入一个文件夹路径:"); }else if (dir.isFile()) { System.out.println("你录入的文件路径,请输入一个文件夹路径:"); }else { //将文加下路径对象返回 return dir; } } } public static long getFileLength(File dir) { //1,定义一个求和变量 long len = 0; //2,获取该文件夹下所有的文件和文件夹listFiles(); File[] subFiles = dir.listFiles(); //3,遍历数组 for (File subFile : subFiles) { //4,判断是文件就计算大小并累加 if(subFile.isFile()) { len = len + subFile.length(); //5,判断是文件夹,递归调用 }else { len = len + getFileLength(subFile); } } return len; } }