File类常用的判断方法
1 import java.io.File; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 5 /** 6 * File中常用的判断方法 7 */ 8 public class Test { 9 public static void main(String[] args) { 10 11 File file1 = new File("java.txt"); 12 //是否是文件 13 System.out.println(file1.isFile()); 14 15 //是否是文件夹 16 System.out.println(file1.isDirectory()); 17 18 //是否是隐藏的 19 System.out.println(file1.isHidden()); 20 21 //是否存在 22 System.out.println(file1.exists()); 23 24 File file = new File("java.txt"); 25 //查看绝对路径 26 System.out.println(file.getAbsolutePath()); 27 28 //查看相对路径 29 System.out.println(file.getPath()); 30 31 //文件的大小 以字节形式返回 32 //tips:UTF-8编码 1个汉字=3个字节 33 System.out.println(file.length()); 34 35 //最后修改时间 36 Date date = new Date(file.lastModified()); 37 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 38 System.out.println(simpleDateFormat.format(date)); 39 40 //打印同级目录下的所有文件和文件夹的名字 41 File file2 = new File("根目录"); 42 String[] list = file2.list(); 43 for (String name : list) { 44 System.out.println(name); 45 } 46 47 //获取目录下的同级文件和文件夹的File对象 48 //通过for循环可以打印出文件的绝对路径 49 File[] files = file2.listFiles(); 50 for (File f : files) { 51 System.out.println(f); 52 } 53 54 } 55 }
File类的几个小练习
统计项目根目录下所有以.txt结尾的文件数量
import java.io.File; /** * 统计根目录中所有以txt为结尾的文件的数量 */ public class Test { public static void main(String[] args) { File file = new File("D:/JAVA/达人课项目/ssm-demo0(1.登陆功能)"); int count = 0; String[] list = file.list(); for (int i = 0; i < list.length; i++) { if (list[i].endsWith(".txt")) { count++; System.out.println(list[i]); } } System.out.println(count); } }
统计项目根目录下所有以.txt结尾的文件数量(优化版)
1 import java.io.File; 2 3 /** 4 * 统计根目录中所有以txt为结尾的文件的数量 5 */ 6 public class Test { 7 public static void main(String[] args) { 8 File file = new File("根目录"); 9 File[] files = file.listFiles(); 10 int count = 0; 11 for (File name : files) { 12 if (name.toString().endsWith(".txt")) { 13 if (name.isFile()) { 14 count++; 15 System.out.println(name); 16 } 17 } 18 } 19 System.out.println("以.txt为结尾的文件数量是" + count); 20 } 21 }
上面那个版本如果根目录下有文件的名字后缀是.txt的文件夹也会被统计进去,这样的话就用File类中的listFiles方法来返回File类型的数组,调用里面的isFile方法,如果是文件再统计数量.
输出指定目录内的全部文件,并且以缩进的格式打印出来
1 import java.io.File; 2 import java.util.Scanner; 3 4 /** 5 * 输出指定目录下所有文件的名称,包括文件夹里的 6 */ 7 public class Test { 8 9 private static int count = 0; 10 11 public static void main(String[] args) { 12 findFile(getFile()); 13 } 14 15 public static void findFile(File file) { 16 File[] fileArray = file.listFiles(); 17 for (int i = 0; i < fileArray.length; i++) { 18 for (int j = 0; j < count; j++) { 19 System.out.print(" "); 20 } 21 System.out.println(fileArray[i]); 22 if (i == fileArray.length - 1) { 23 count--; 24 } 25 if (fileArray[i].isDirectory()) { 26 count++; 27 findFile(fileArray[i]); 28 } 29 30 } 31 } 32 33 public static File getFile() { 34 System.out.println("请输入要显示名称的目录"); 35 Scanner sc = new Scanner(System.in); 36 while (true) { 37 String s = sc.nextLine(); 38 File file = new File(s); 39 if (!file.exists()) { 40 System.out.println("输入目录有误,请重新输入!"); 41 } else if (file.isFile()) { 42 System.out.println("您输入的是文件的路径!请重新输入"); 43 } else { 44 return file; 45 } 46 } 47 } 48 }
心得
主要难点有两个,一个是如何控制缩进增加和减少,一个是递归打印文件夹内的文件