File类递归练习统计:
计算文件夹大小:
public static void main(String[] args) { //需求:从键盘接收一个文件夹路径,统计该文件夹大小 File dir=getDir(); System.out.println(getFileLength(dir)); } /*从键盘接收一个文件夹路径:*/ public static File getDir() { // 1.创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径"); // 2.定义一个无限循环 while (true) { String line = sc.nextLine(); // 3.将录入结果存储并封装成File对象 File dir = new File(line); if (!dir.exists()) { System.out.println("录入的文件夹路径不存在,请从新输入:"); } else if (dir.isFile()) { System.out.println("你录入的是文件路径,请从新输入:"); } else { //5.将文件夹路径对象返回 return dir; } } } public static long getFileLength(File dir) { //1.定义一个求和对象 long len=0; //2.获取该文件夹下的所有文件和文件夹listFile() 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; }
删除该文件夹:
public static void main(String[] args) { //需求:从键盘接收一个文件夹路径,统计该文件夹大小 File dir=getDir(); deleteFile(dir); } /*从键盘接收一个文件夹路径:*/ public static File getDir() { // 1.创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径"); // 2.定义一个无限循环 while (true) { String line = sc.nextLine(); // 3.将录入结果存储并封装成File对象 File dir = new File(line); if (!dir.exists()) { System.out.println("录入的文件夹路径不存在,请从新输入:"); } else if (dir.isFile()) { System.out.println("你录入的是文件路径,请从新输入:"); } else { //5.将文件夹路径对象返回 return dir; } } } public static void deleteFile(File dir) { //1.获取该文件夹下的所有文件和文件夹listFile() File [] subilt =dir.listFiles(); //2.遍历数组 for (File file : subilt) { //判断是文件夹直接删除 if(file.isFile()) { file.delete(); //如果是文件夹,递归调用 }else { deleteFile(file); } } //循环结束后把空文件删除。 dir.delete(); System.out.println("删除成功"); }
求斐波那契数列:
//数组求斐波那契数列: int [] arr=new int[12]; //相当于一年后 arr[0]= 1; arr[1]= 1; for (int i = 2; i < arr.length; i++) { arr[i]=arr[i-2]+arr[i-1]; } System.out.println(arr[arr.length-1]); System.out.println(Fun(12)); } // 用递归求斐波那契数列: public static int Fun(int num) { if (num ==1 || num==2) { return 1; }else { return Fun(num-2)+Fun(num-1); } }