File类的常用方法和练习

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 }

心得

主要难点有两个,一个是如何控制缩进增加和减少,一个是递归打印文件夹内的文件

 

原文地址:https://www.cnblogs.com/xiaowangtongxue/p/10718833.html