File总结(只是用来创建文件或文件夹,写东西要靠IO)

本文详细介绍了Java中File类的使用,包括如何创建、删除文件和目录,以及判断文件类型和存在的方法。通过示例代码展示了如何进行多级目录的创建,文件的读写操作,并提供了递归删除多级文件夹的实现。同时,还讲解了统计特定目录下各文件后缀数量的方法。
摘要由CSDN通过智能技术生成

变量、数组、集合等方式的弊端:无法永久化存储数据

IO可以对硬盘中的文件进行读写

File表示读写的文件在哪,也可以对文件进行创建、删除等操作

File:

他是文件和目录路径的抽象表示(目录:可以理解为文件夹)

文件和目录可以通过file封装成对象

file封装的对象仅仅是一个路径名,它可以是存在,也可以是不存在

构造方法:

File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File(String parent,String child)从父路径名字符串和子路径名字符串创建新的File实例
File(File parent,String child)从父抽象路径名和子路径名字符串创建新的File实例

String s = "D:\\d\\a.text";

File f = new File(s);

剩余两个简单理解就是将两个路径合并在一起看

绝对路径:

从盘符开始:盘符:D:  C: E:等

File f = new File(D:\\it\\a.text);

相对路径:

相对当前项目下的路径

File f = new File(a.text);-----表示当前项目下

File f = new File(模块名\\a.text);----表示当前模块下

 看左边的目录,当filemodule和a.text齐平的情况下,属于 a.text是当前项目下,若和src齐平,则属于当前模块下

成员方法:

添加

public boolean createNewFile()

创建一个新的空文件

注意点:

是创建文件,而不是创建文件夹(不管有没有后缀名都只能创建文件)

如果路径存在同名文件,返回false(存不了)

如果路径没有同名文件,返回true(创建成功)

若访问的路径不存在,则会报错

例如:

File f = new File("D:\\aaa\\bbb");

aaa路径是不存在的

public boolean mkdir()创建一个单级文件夹(比较少用,且只能创建单级)
public boolean mkdirs()

创建一个多级文件夹

注意点:

可创建单级,也可创建多级

不管有没有后缀名都只能创建文件夹

a.text创建出来的都是名为a.text的文件夹

删除

public boolean delete()

删除由此抽象路径名表示的文件和目录

可以删除文件,也可以删除目录即文件夹(可以是多层文件夹)

注意点:

1.删除不走回收站

2.文件、空文件夹可以直接删除

但是要删除带有内容的文件夹,只能先进入这个文件夹,把内容删除完,才能删除这个文件夹(必用递归方法)

判断:

public boolean isDirectory()测试抽象路径名表示的File是否为目录(文件夹)
public boolean isFile()测试抽象路径名表示的File是否为文件
public boolean exists()测试抽象路径名表示的File是否存在
public String getName()

返回由此抽象路径表明的文件或目录的名称

注意:

1.如果调用的是文件,返回的是文件名和后缀名

2.如果调用的是一个文件夹,返回的是文件夹名

高级获取功能:

public File[ ] listFile() 

返回此抽象路径名表示的目录中的文件和目录的File对象数组

注意点:

进入文件夹,获取这个文件夹里的所有文件和文件夹的File对象

并把这些File对象偶放在一个数组中返回(包括隐藏文件)

当调用者的路径不存在或者是一个文件时,返回null

空文件夹 length返回0

有内容的文件夹,所有文件和文件夹路径放在File数组中返回(包括隐藏内容)

需要权限才能访问的内容,返回null

File file = new File("Mo2\\aa\\bb\\cc");
    if (!file.exists()){
        file.mkdirs();
    }
    File file1 = new File(file, "a.text");
    file1.createNewFile();

    File file2 = new File("Mo2\\aa\\a.text");
    file2.createNewFile();

    File file3 = new File("Mo2\\aa\\ss");

    file3.mkdirs();
    File file4 = new File("Mo2\\aa");
    de(file4);

    //file4.delete();多级文件夹含文件不能直接delete

    //删除一个多级文件夹
}

private static void de(File file4) {
    
    File[] files = file4.listFiles();
    
    for (File file5 : files) {
        if (file5.isFile()){
            file5.delete();
        }else{
            de(file5);
        }
    }

    file4.delete();
}

public static void main(String[] args) {

    //求对应每种文件后缀的数量
    File mo2 = new File("Mo2");
    HashMap<String, Integer> o = new HashMap<>();

    getCount(o, mo2);
    System.out.println(o);
}

private static void getCount(HashMap<String, Integer> o, File mo2) {
    File[] files = mo2.listFiles();



1.判断是不是文件,不是就递归
2.获取截断名(后缀名)
3.判断后缀名(键)是否已存在

    for (File file : files) {
        if (file.isFile()) {
            String name = file.getName();
            String[] split = name.split("\\.");//注意:有的文件叫aaa,有的叫a.a.text存在,但此处不考虑在内
            if (split.length == 2) {
                String s = split[1];
                if (o.containsKey(s)) {
                    Integer i = o.get(s);//不能写int i = 1;不然每次进来最多就为2
                    i++;
                    o.put(s, i);

                } else {
                    o.put(s, 1);
                }
            }
        } else {
            getCount(o, file);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值