2023/3/2文件File

2023/3/2文件File

一、File对象的创建方式

1、File(String pathname)

2、File(String parent, String child)

3、File(File parent, String child)

4、绝对路径和相对路径是什么意思:

①绝对路径是从盘符开始的路径
②相对路径默认从当前项目下去找

二、File常见成员方法

1、判断是否为文件夹:isDirectory()

2、判断是否为文件 :isFile()

3、判断此路径表示的File是否存在: exist()

4、返回文件的长度:length()

5、返回文件的绝对路径:getAbsolutePath()

6、返回定义文件时的路径:getPath()

7、返回带有后缀的文件名:getName()

8、返回文件的最后修改时间:lastModified()

9、创建一个新的文件:createNewFile()

①如果当前路径的文件不存在,则创建成功,返回true
②如果当前路径的文件存在,创建失败,返回false
③如果父级路径不存在,方法会产生异常
④这个方法创建的一定是个文件,如果路径中没有包含后缀名,那么将会创建一个没有后缀的文件

10、创建单级文件夹:mkdir()

①Windows中路径是唯一的,如果路径重复,则创建失败,返回false
②mkdir方法只能创建单级文件夹,无法创建多级文件夹

11、创建多级文件夹:mkdirs()

12、删除文件、空文件夹:delete()

①如果删除的是文件,直接删除不走回收站
②如果删除的是空的文件夹,直接删除不走回收站
③如果删除的是有文件的文件夹,会删除失败!

13、获取路径下的所有内容:File[] listFiles()

①当调用者File表示的路径不存在,返回null
②当调用者File表示的路径是文件时,返回null
③当调用者File访问的路径需要权限时,返回null
④当访问的路径是空文件夹时,返回一个空数组
⑤当访问的路径是一个有内容的文件夹时,把里面所有的文件和文件夹的路径放在File[]数组中返回(包括隐藏文件)

14、列出所有文件系统根:static File[] listRoots()

15、获取当前路径下的所有内容,仅返回名字:String[] list()

16、利用文件名过滤器获取当前路径下的所有内容,仅返回名字:String[] list(FilenameFilter filter)

17、获取当前路径下的所有内容,返回文件:File[] listFiles()

18、利用文件过滤器获取当前路径下的所有内容,返回文件:File[] listFiles(FileFilter filter)

19、利用文件名过滤器获取当前路径下的所有内容,返回文件:File[] listFiles(FilenameFilter filter)

与上面的区别是,FilenameFilter的参数是分开的,而FileFiter的参数是两部分

练习:数一下一个文件里各个类型的文件个数分别是多少

public class Test6 {
    /*练习:数一个文件中所有的类型文件的个数分别是多少*/
    public static void main(String[] args) {
        File file = new File("D:\\QQ");
        System.out.println(count(file));
    }

    /*
    *
    * 数一个文件中所有的类型文件的个数分别是多少
    *
    * */
    private static HashMap<String, Integer> count(File src) {
        HashMap<String, Integer> map = new HashMap<>();
        File[] files = src.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    /*注意这里需要.的话必须要\\.否则会出错,和正则表达式有关*/
                    String[] arr = file.getName().split("\\.");
                    /*必须要长度为2以上,才表示根据后缀名分割成功:因为存在无后缀名的文件?不太确定*/
                    if (arr.length >= 2) {
                        String key = arr[arr.length - 1];
                        if (map.containsKey(key)) {
                            int num = map.get(key);
                            num++;
                            map.put(key, num);
                        } else {
                            map.put(key, 1);
                        }
                    }
                } else {
                    HashMap<String, Integer> sonMap = count(file);
                    for (Map.Entry<String, Integer> entry : sonMap.entrySet()) {
                        if (map.containsKey(entry.getKey())){
                            int num = map.get(entry.getKey());
                            /*父图加上子图的个数*/
                            map.put(entry.getKey(), num + entry.getValue());
                        } else {
                            map.put(entry.getKey(), entry.getValue());
                        }
                    }
                }
            }
        }
        return map;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值