1.遍历文件夹
遍历C:\WINDOWS目录下所有文件(不包括文件夹),打印出最大最小文件和它们的大小(字节)
知识点:listFiles(),length() ,isFile()
1 package IOTest; 2 import java.io.File; 3 4 public class test { 5 public static void main(String[] args) { 6 7 File f = new File("C:/WINDOWS"); 8 File fs[] = f.listFiles(); 9 //统计最大最小值要使用的临时变量 10 int max = 0; 11 int min = (int) (Math.pow(2, 31) - 1); 12 int max_index = 0; 13 int min_index = 0; 14 15 for (int i = 0; i < fs.length; i++) { 16 if (fs[i].isFile()) { 17 if (fs[i].length() > max) { 18 max = (int) fs[i].length(); 19 max_index = i; 20 } 21 if (fs[i].length() < min && fs[i].length() != 0) {// 最小文件不能为0字节 22 min = (int) fs[i].length(); 23 min_index = i; 24 } 25 } 26 } 27 System.out.printf("最大文件是%s,大小是%d字节\n", fs[max_index], max); 28 System.out.printf("最小文件是%s,大小是%d字节", fs[min_index], min); 29 } 30 }
效果图:
2.遍历文件夹(进阶)
遍历指定文件夹下的所有文件(包括所有子文件夹下的文件)
知识点:递归,全局变量,把第一问的代码进行改造即可
1 package IOTest; 2 3 import java.io.File; 4 5 public class test { 6 //不得已用了以下全局变量 7 static int max = 0; 8 static int min = (int) (Math.pow(2, 31) - 1); 9 static int max_index = 0; 10 static int min_index = 0; 11 static String maxFile=null;//最大文件的名字 12 static String minFile=null; 13 14 public static void func(File f) { 15 if (f.exists()) { 16 File fs[] = f.listFiles(); 17 for (int i = 0; i < fs.length; i++) { 18 if (fs[i].isFile()) {//若是文件 19 if (fs[i].length() > max) { 20 max = (int) fs[i].length(); 21 max_index = i; 22 maxFile=String.valueOf(fs[max_index]); 23 } 24 if (fs[i].length() < min && fs[i].length() != 0) {// 最小文件不能为0字节 25 min = (int) fs[i].length(); 26 min_index = i; 27 minFile=String.valueOf(fs[min_index]); 28 } 29 }else{//若是文件夹,递归调用func继续查找 30 func(fs[i]); 31 } 32 } 33 } 34 } 35 36 public static void main(String[] args) { 37 38 File f = new File("D:/Program Files (x86)");//若是C盘有可能出现指针异常,估计是文件访问权限问题 39 func(f); 40 System.out.printf("最大文件是 %s,大小是%d字节\n",maxFile,max); 41 System.out.printf("最小文件是 %s,大小是%d字节\n",minFile,min); 42 } 43 }
效果图: