File类的使用

概念:代表物理盘符中的一个文件或者文件夹

 

 

小案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package com.iopractise;
 
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Date;
 
/**
 * File类的使用
 * 1.分隔符
 * 2.文件操作
 * 3.文件夹操作
 */
public class Demo19 {
    public static void main(String[] args) throws Exception {
//        separator();
//        fileOper();
        directoryOpe();
    }
 
    // 1. 分隔符
    public static void separator() {
        System.out.println("路径分隔符" + File.pathSeparator);
        System.out.println("名称分隔符" + File.separator);
    }
 
    public static void fileOper() throws IOException {
 
        // 1. 创建文件
        File file = new File("file.txt");
        if (!file.exists()) { // 是否存在
            boolean b = file.createNewFile();
            System.out.println("创建结果:" + b);
        }
 
        // 2. 删除文件
        // 2.1 直接删除
        boolean deleteFlag = file.delete();// 成功true
        System.out.println("文件删除是否成功:" + deleteFlag);
        // 2.2 使用jvm退出时删除
        file.deleteOnExit();//这个方法最后是没有返回值的
 
        // 3. 获取文件信息
        System.out.println("获取绝对路径" + file.getAbsolutePath());
        System.out.println("获取路径" + file.getPath());//该方法获取的是文件的相对路径
        System.out.println("获取文件名称" + file.getName());
        System.out.println("获取夫目录" + file.getParent());
        System.out.println("获取文件长度" + file.length());
        System.out.println("文件创建时间" + new Date(file.lastModified()).toLocaleString());
 
        // 4. 判断
        System.out.println("是否可写" + file.canWrite());
        System.out.println("是否是文件" + file.isFile());
        System.out.println("是否隐藏" + file.isHidden());
    }
 
    // 文件夹操作
    public static void directoryOpe() throws Exception{
        // 1. 创建文件夹
        File dir = new File("d:\\aaa\\bbb\\ccc");
        System.out.println("文件目录:"+dir.toString());
        if(!dir.exists()){
            //dir.mkdir(); // 只能创建单级目录
            dir.mkdirs(); // 创建多级目录
        }
 
        // 2. 删除文件夹
        // 2.1 直接删除
        boolean deleteFlag = dir.delete();// 只能删除最底层空目录
        System.out.println("文件夹是否删除成功:"+deleteFlag);//这里只会删除ccc这层目录,如果ccc目录下还有其他文件,这个时候,ccc目录是不会删除的。
        // 2.2 使用jvm删除
        dir.deleteOnExit();
 
        // 3. 获取文件夹信息
        System.out.println("获取绝对路径" + dir.getAbsolutePath());
        System.out.println("获取路径" + dir.getPath());//File(文件的路径),该方法返回的是括号中的文件路径
        System.out.println("获取文件名称" + dir.getName());
        System.out.println("获取父目录" + dir.getParent());
        System.out.println("获取文件长度" + dir.length());
        System.out.println("文件夹创建时间" + new Date(dir.lastModified()).toLocaleString());
 
        // 4. 判断
        System.out.println("是否是文件夹" + dir.isDirectory());
        System.out.println("是否隐藏" + dir.isHidden());
 
        // 5. 遍历文件夹
        File dir2 = new File("D:\\图纸");
        String[] files = dir2.list();
        for(String string : files){
            System.out.println(string);
        }
        System.out.println("================FileFilter接口的使用==================");
        // FileFilter接口的使用
 
        File[] files2 = dir2.listFiles(new FileFilter(){
 
            public boolean accept(File pathname){
                if(pathname.getName().endsWith(".xmind")){
                    return true;
                }
                return false;
            }
        });
        for(File file : files2){
            System.out.println(file.getName());
        }
 
    }
}

注意:File.length()方法获取的是文件的大小。(通俗的讲)

FileFilter接口

Public interface FileFilter

  .boolean accept(File pathname)

.当调用File类中listFiles()方法的时候,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可以出现在listFiles()的返回值中。

posted on   ~码铃薯~  阅读(73)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示