栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第十一章(1)----File类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十一章(1)----File类

File 类

File 类包含了获得一个文件 / 目录的属性 , 以及对文件 / 目录进行改名和删除的方法 。

在文件系统中 , 每个文件都存放在一个目录下 。 绝对文件名 ( absolute file name ) 是由文件名和它的完整路径以及驱动器字母组成 的。
相对文件名是相对于当前工作目录的 。 对于相对文件名而言 , 完整目录被忽略 。 例如 :
Welcome . java 是一个相对文件名 。 如果当前工作目录是 c : book , 绝对文件名将是 c : book Welcome . java

File类构造函数与分隔符
File类会自动甄别文件系统路径Linux/Windows
关联了一个相对路径的文件

File f1 = new File("haha.txt");
 System.out.println(f1.exists()); //项目根目录下的haha.txt文件

关联了一个绝对路径的文件

  File f2 = new File("C:\Users\haha.txt");

路径拼接

如果知道要创建的文件的根目录parentPath,需要使用路径拼接来获得绝对路径,但因为Linux/Unix/Windows/MAC这些操作系统中 路径分割符是不统一的,当我们不确定程序所运行的系统环境 如果需要用到文件路径 路径分割符采用File自带的separator

String parentPath = "C:\Users\HENG\Desktop\YD_Java\src\Chapter11";
        File f7 = new File(parentPath + File.separator + "haha.txt");
        System.out.println(f7.exists());

File类的获取相关

        //打印文件的绝对路径
        System.out.println(f.getAbsolutePath());
        //文件对象构造函数中写的是啥 这边打印的就是啥
        System.out.println(f.getPath());
        //获取文件名 - 获取相对路径
        System.out.println(f.getName());
        //获取文件大小 单位字节 b
        System.out.println(f.length());
        //最后一次修改时间
        System.out.println();
        String time = DateFormat.
               getDateTimeInstance(DateFormat.LONG,DateFormat.LONG).
                format(new Date(f.lastModified()));
        System.out.println(time);
        System.out.println(f.getParent());

文件和文件夹的创建

        //文件的创建 目录的创建
        File f1 = new File("file01.txt");
        //File f1 = new File("E:\file01.txt");
        //E盘不存在 则报错 IOException
        //文件不存在 则创建 返回 true
        System.out.println(f1.createNewFile());
        //文件已存在 则不创建 返回 false
        System.out.println(f1.createNewFile());

        //合理的创建方式 先判断 再考虑是否创建
        if (!f1.exists()) {
            f1.createNewFile();
        }
        //一般而言 目录是没有后缀名 文件也可以没有后缀名
        File f2 = new File("haha");
        if (!f2.exists()) {
            f2.createNewFile();
        }
        //File dirc1 = new File("haha");
        //上面已经有一个同名没后缀名的文件 从系统角度而言 属于重名内容 不允许创建
        File dirc1 = new File("lala");
        //创建一个目录
        System.out.println(dirc1.mkdir());
        File dirc2 = new File("xixi.txt");
        System.out.println(dirc2.mkdir());
        //上边xixi.txt目录已经创建 则同名的xixi.txt文件不允许创建
        System.out.println(dirc2.createNewFile());
        //总而言之,对于系统而言 无论是文件还是目录 只要重名都不能再创建新的了
        //尽量创建文件时加上后缀名
        //尽量创建目录时不要有非法字符存在(后缀名)
        File dirc3 = new File("abc/def/ghi");
        //mkdir一次只能创建一个一级目录
        System.out.println(dirc3.mkdir());
        //若果创建多级目录用mkdirs
        System.out.println(dirc3.mkdirs());

文件和文件夹的删除

		File f1 = new File("xixi.txt");
        //删除一个目录 不走回收站
        f1.delete();
        //该目录中有多个子文件和其他子目录 不能直接删除
        File f2 = new File("abc");
        System.out.println(f2.delete());
        //如果非得要删除的话 只能先将其内部的所有元素删除之后 再删除该目录

        File f3 = new File("haha.txt");
        f3.delete();
        //总而言之 删除文件 用delete
        //delete只能删除单一的文件或单一的目录
        //如果所删除的目录有内容 则不能删除 只能手动

** 子文件与文件过滤器**

 public static void main(String[] args) {
        File dir = new File("C:\Users\HENG\Desktop\YD_Java");
        //查看该目录下所有的文件(包含隐藏文件)
        //list()返回的是该目录下第一层级的所有文件和目录的名字的字符串数组
        MyFileNameFilter filter = new MyFileNameFilter();
        String[] fileNames = dir.list(filter);//只能传关于名字的过滤
        if (fileNames != null) {
            for (String name : fileNames) {
                System.out.println(name);
            }
        }

        MyFileFilter filter2 = new MyFileFilter();
        //listFiles()返回的是该目录下第一层级的所有文件和目录的File对象的一维数组
        File[] files = dir.listFiles(filter2);//关于文件名 文件属性的过滤都行
        if (files != null) {
            for (File file : files) {
                System.out.println(file.getAbsolutePath());
            }
        }
        dir.list();
    }
    public static class MyFileFilter implements FileFilter {

        @Override
        public boolean accept(File file) {
            return file.length() > 2000;
        }
    }
    public static class MyFileNameFilter implements FilenameFilter {
        //File dir 父目录
        //String name 当前文件的名称
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");
        }
    }

获取文件夹全部内容

private static void printDirDieDai(File dir) {
        linkedList queue = new linkedList<>();
        queue.offer(dir);
        while (!queue.isEmpty()) {
            File file = queue.poll();
            System.out.println("【" + file.getName() + "】");
            File[] files = file.listFiles();
            if (files != null) {
                for (File f : files) {
                    if (f.isFile()) {
                        System.out.println(f.getName());
                    } else {
                        queue.offer(f);
                    }
                }
            }
        }
    }

    private static void printDir(File dir,int level) {
        System.out.println(getSpace(level) + "【" + dir.getName() + "】");
        File[] files = dir.listFiles();
        if (files == null) {
            return;
        }
        for (File file : files) {
            if (file.isFile()) {
                System.out.println(getSpace(level + 1) + file.getName());
            } else {
                printDir(file,level + 1);
            }
        }
    }

    private static String getSpace(int level) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < level; i++) {
            sb.append("--");
        }
        return sb.toString();
    }

删除文件夹全部内容

private static void deleteDir(File dir) {
        File[] files = dir.listFiles();
        if (files == null) {
            dir.delete();
            return;
        }
        for (File file : files) {
            if (file.isFile()) {
                file.delete();
            } else {
                deleteDir(file);
            }
        }
        dir.delete();
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号