JAVA File 类

File类概述和构造方法

File类是什么?

1,在读写数据时告诉虚拟机要操作的(文件/文件夹)在哪

2,对(文件/文件夹)本身进行操作。包括创建,删除等。

file:他是文件和目录路径名的抽象表示

1.文件和目录可以通过File封装成对象

2.File封装的对象仅仅是一个路径名。他可以是存在的,也可以是不存在的

File的构造方法:

File​(String pathname)

通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例

File​(String parent, String child)

从父路径名字符串和子路径名字符串创建新的 File实例

File​(File parent, String child)

从父抽象路径名和子路径名字符串创建新的 File实例

第二个构造就是将两个字符串路径进行拼接(可以用于使用变量访问不同路劲)

第三个则是File 跟字符串进行拼接成新的路径

绝对路径和相对路径

绝对路径:从盘符开始  

相对路径:相对当前项目下的路径

File类成员方法

创建文件夹

public boolean createNewFile()

创建一个新的空的文件

public boolean mkdir()

创建一个单级文件夹

public boolean mkdirs()

创建一个多级文件夹

File file =new File("test//a.txt");
file.createNewFile();

createNewFile()   

如果文件存在,那么创建失败返回false .

如果文件不存在,那么创建成功,返回true

不管调用者有没有后缀名,只能创建文件

mkdir()   不怎么用

不管调用者有没有后缀名,只能创建单级文件夹

mkdirs()      创建文件夹直接用这个

可以创建单级文件夹,也可以创建多级文件夹

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

File删除

public boolean delete​()

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

delete方法直接删除不走回收站。

如果删除的是一个文件,直接删除。

如果删除的是一个文件夹,必须先删除文件夹中的内容,最后才能删除文件夹。

File 判断和获取功能

public boolean isDirectory()

测试此抽象路径名表示的File是否为目录

public boolean isFile()

测试此抽象路径名表示的File是否为文件

public boolean exists()

测试此抽象路径名表示的File是否存在

public String getAbsolutePath()

返回此抽象路径名的绝对路径名字符串

public String getPath()

将此抽象路径名转换为路径名字符串

public String getName()

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

getName() :

调用者是文件,则得到的是文件名和后缀名

如果调用者是文件夹,得到的是文件夹名

File类高级获取功能

public File[] listFiles()

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

1.当调用者不存在是,返回null

2.当调用者是一个文件时,返回null

3.当调用者是空文件夹时,返回一个长度为0的数组

4.当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在file数组中返回

5.当调用者是有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在file数组中返回,包括隐藏内容

6.当调用者是一个需要权限才能进入的文件夹时  返回null

例子  :获取文件内所有文件夹 和 文件  并统计类型跟相应的个数

public class Test {
    public static void main(String[] args) throws IOException {
        File file = new File("test");
        HashMap<String, Integer> map = new HashMap<>();

        getCount(map, file);
        System.out.println(map);

    }

    private static void getCount(HashMap<String, Integer> map, File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            //判断是否是文件
            if (f.isFile()) {
                String name = f.getName();
                //这里分割按 .  进行分割但是. 是转义字符 必须加\\
                String[] strings = name.split("\\.");
                if (strings.length == 2) {
                    String endName = strings[1];
                    if (map.containsKey(endName)) {
                        //已经存在键
                        //获取值然后加一
                        int value = map.get(endName) + 1;
                        //覆盖原来的值 完成加一
                        map.put(endName, value);
                    } else {
                        //键还不存在
                        //初始化键 设置为一次
                        map.put(endName, 1);
                    }
                }
                //如果不是文件是文件夹 则用递归再次调用
            } else {
                if(map.containsKey("wenjianjia")){
                    //已经存在键
                    //获取值然后加一
                    int value = map.get("wenjianjia")+1;
                    //覆盖原来的值 完成加一
                    map.put("wenjianjia",value);
                }else{
                    //键还不存在
                    //初始化键 设置为一次
                    map.put("wenjianjia",1);
                }
                //递归再次调用
                getCount(map, f);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值