File 类的简单使用

1、分隔符

	/**
     * 分隔符
     */
    @Test
    public void test01() {
        // 路径分隔符,用于分隔多个路径
        // windows用(;)表示,linux/unix/mac用(:)表示
        System.out.println(File.pathSeparator);

        // 名称分隔符,分隔路径中的名称
        // windows用(\)表示,linux/unix/mac用(/)表示
        System.out.println(File.separator);
    }

2、文件的相关属性

    /**
     * 文件的相关属性
     */
    @Test
    public void test02() {
        // 构建一个 File 对象
        // file 对象就表示硬盘上的 D:\test\a.txt 文件
        File file = new File("D:\\test\\a\\c.txt");
//        File file2 = new File("D:\\test", "a.txt");
        System.out.println(file);
//        System.out.println(file2);
//        System.out.println(Objects.equals(file, file2));

        // 文件的相关属性
        System.out.println("文件存放的绝对路径:" + file.getAbsolutePath());
        System.out.println("文件存放的绝对路径的 file 对象:" + file.getAbsoluteFile());
        System.out.println("文件的路径:" + file.getPath());
        System.out.println("文件名或者目录名:" + file.getName());
        System.out.println("是否可读:" + file.canRead());
        System.out.println("是否可写:" + file.canWrite());
        System.out.println("是否可执行:" + file.canExecute());
        System.out.println("是否是绝对路径:" + file.isAbsolute());
        System.out.println("是否是文件:" + file.isFile());
        System.out.println("是否是目录:" + file.isDirectory());
        System.out.println("是否隐藏文件:" + file.isHidden());
        // 文件的大小,以字节为单位
        System.out.println("文件长度:" + file.length());
        System.out.println("文件的最后修改时间:" + new Date(file.lastModified()));
        System.out.println("文件的父目录:" + file.getParent());
        System.out.println("文件的父目录对象:" + file.getParentFile());
        // 分区相关
        System.out.println("当前文件所在分区总空间:" + file.getTotalSpace());
        System.out.println("当前文件所在分区可用空间:" + file.getUsableSpace());
    }

3、创建以及删除文件

    /**
     * 创建文件
     */
    @Test
    public void test03() {
        // 可以直接使用 /,不用 \
        File file = new File("D:/test/b/c/b.txt");
        File parentFile = file.getParentFile();
        // 首先判断父目录是否存在
        if (!parentFile.exists()) {
            // 创建父目录,mkdirs()可创建多级目录,mkdir()只能创建 1级目录
            if (parentFile.mkdirs()) {
                System.out.println("创建目录成功");
            }
        }
        // 判断该文件是否存在
        boolean flag = false;
        if (!file.exists()) {
            try {
                // 创建文件,返回 boolean 值
                flag = file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (flag) {
                System.out.println("文件创建成功");
            } else {
                System.out.println("文件创建失败");
            }
        }
        // 删除文件:删除的文件不经过回收站,直接删除
        flag = file.delete();
        System.out.println("文件删除是否成功:" + flag);
    }

4、遍历目录

    /**
     * 遍历目录
     */
    @Test
    public void test04() {
        File file = new File("D:/test");
        // 如果是目录,返回 file 对象下的所有文件和目录的名字,如果是文件,返回 null
        String[] list = file.list();
        System.out.println("file对象下的所有文件目录名字:" + Arrays.toString(list));
        // 如果是目录,返回 file 对象下的所有文件和目录的对象,如果是文件,返回 null
        File[] files = file.listFiles();
        System.out.println("file对象下的所有文件目录对象:" + Arrays.toString(files));
    }

5、遍历目录下的所有文件(包含子目录)

    // 用来存储目录下的每一个文件对象
    private static List<File> filesList = new ArrayList<>();

    /**
     * 遍历目录下的所有文件,包含子目录
     *
     * @param file File 对象
     */
    public void showFile(File file) {
        // 获取 file 下的所有文件以及目录
        // 非空判断
        File[] files = null;
        if (file != null) {
            files = file.listFiles();
        }
        // 遍历添加到集合中
        if (files != null) {
            for (File temp : files) {
                // 添加到集合中
                filesList.add(temp);
                // 判断是否是文件夹
                if (temp.isDirectory()) {
                    showFile(temp);
                }
            }
        }
    }
    
    public static void main(String[] args) {
        File file = new File("D:/test");
        // 遍历目录下的所有文件,包含子目录
        showFile(file);
        System.out.println(filesList);
    }    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值