美文网首页Java
Java 21 IO技术File(包含过滤器)

Java 21 IO技术File(包含过滤器)

作者: 第二套广播体操 | 来源:发表于2019-01-29 11:14 被阅读0次

    用于处理设备上数据的技术 设备:内存 硬盘 光盘
    流 系统资源 windows系统本身就可以操作设备 各种语言就只是使用了系统平台上的这个资源
    并对外提供各种语言自己的操作功能 这些功能调用的就是系统资源
    使用资源 要释放
    io:java中所涉及的功能在java.io包中


    File:Io技术用于操作设备上数据的 而数据最常见的体现形式就是文件
    先了解文件的操作:
    创建 删除 存在 隐藏 获取

    public class File_Test1 {
        public static void main(String[] args) {
            File file=new File("D\\","1.txt");
            File file1=new File("C"+File.separator,"1.txt");
    //        File.separator 系统分割符
        }
    }
    

    File 常见方法
    * 1.名字 获取名字
    * String getName();
    * 2. 大小 获取大小
    * long length();
    * 3. 类型 获取类型 没有 可以自定义
    * 4.路径
    * String getParent();

    public class File_Test2 {
        public static void main(String[] args) {
    
            File file=new File("C:\\abv\\1.txt");
            String name=file.getName();
            System.out.println(name);
            long size=file.length();
            System.out.println(size);
            String way=file.getParent();
            System.out.println(way);
    
        }
    }
    

    File方法:
    1.获取绝对路径
    String getAbsolutePath()
    2.获取路径
    String getPath()
    3.获取文件最后一次修改时间 要求x年x月x日 时间
    long lastModified()
    4.文件是否是隐藏的
    boolean isHidden()
    5.发现file文件对象封装的文件或文件夹时可以存在的也可以是不存在
    那么怎么用file功能创建呢?
    创建功能:
    boolean createNewFile()
    boolean mkdir() 创建文件夹
    bolean mkdirs() 创建多级文件夹
    删除功能:
    boolean delete() 不走回收站
    存在:
    6.一个file对象封装的文件或者文件夹到底时候存在呢
    Boolean exists()
    7.getFreeSpace(); 未使用空间 getUsableSpace()已使用

    public class File_Test3 {
        public static void main(String[] args) throws IOException {
            File file=new File("abc//");
    //        methodDemo1(file);
            methodDemo2(file);
        }
    
        private static void methodDemo2(File file) throws IOException {
    /*//        创建
            boolean b=file.createNewFile();//如果文件存在则不创建
            System.out.println(b);
    //       存在
            Boolean exist= file.exists();
            System.out.println(exist);*/
    //        创建文件夹 创建多级文件夹
            Boolean mkdir=file.mkdir();
    //        directory目录
            Boolean mkdirs=file.mkdirs();
    //        删除文件夹 应该先删除里面的内容 再删除文件夹
            System.out.println(mkdir);
        }
    
        private static void methodDemo1(File file) {
            String path=file.getAbsolutePath();//获取文件对象的绝对路径 即使封装是相对的 获取的也是绝对的
            String path1=file.getPath();//获取封装路径 封装什么拿什么
            System.out.println(path);
            System.out.println(path1);
    
    
            long time=file.lastModified();
            System.out.println(time);
    //        毫秒值 需要转换
            Date date=new Date(time);
    //        DateFormat dateFormat=DateFormat.getDateInstance();
    //        String timeString=dateFormat.format(date);
            String timeString= DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM).format(date);
            System.out.println(timeString);
    
            boolean b=file.isHidden();
            System.out.println(b);
        }
    }
    

    获取文件夹中的所有文件和文件夹名称

    public class File_Test4 {
        public static void main(String[] args) {
    //        获取文件夹中的所有文件和文件夹名称
            File dir=new File("C:\\");
            File[] files=dir.listFiles();//可以对文件进行操作
            for (File f:files)
                System.out.println(f);
          /*  String[] names=dir.list();//列出当前目录下的所有文件和文件夹名称包含隐藏文件
    //        只能获取名称
             if(names!=null)
            for (String name:names)
                System.out.println(name);*/
        }
    }
    

    搜索D盘下所有.txt文件(不包括子文件夹)

    public class File_Test5 {
        public static void main(String[] args) {
    //        提供路径
            File dir=new File("D:\\");
    //        过滤器
            File[] names=dir.listFiles(new FilerByContain(".txt"));
            for (File name:names)
                System.out.println(name);
        }
    }
    
    过滤器

    过滤器方法


    过滤器方法

    过滤器

    public class FilerByContain implements FileFilter {
        private String type;
    
        public FilerByContain(String string) {
            this.type = string;
        }
    //    构造函数 传入类型
    
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().contains(type);
    //        获取文件名 是否包含type
        }
    }
    

    遍历指定目录下的内容 包含子目录下的内容 (递归)
    递归:函数自身调用自身 函数内部又使用到了该函数功能
    什么时候用
    功能被重复使用 但是每一次该功能使用参与的运算的数据不同时 可以
    使用时 一定要定义条件

    public class File_Test7 {
        public static void main(String[] args) {
        
            File file=new File("D:\\QQ");
            getFile(file);
    
        }
    
        private static void getFile(File file) {
            File[] files=file.listFiles();
            System.out.println(file);//输出目录名
            for (File f :
                    files) {
                if (f.isDirectory())//如果f是目录则递归
                    getFile(f);
                else {
                    System.out.println(f);
                }
    
            }
        }
    }
    

    递归 删除目录

    public class File_Test8 {
        public static void main(String[] args) {
            File file=new File("D:\\PanData");
            deleteData(file);
        }
    
        private static void deleteData(File file) {
            File[] files=file.listFiles();
            for (File f :
                    files) {
                  if (f.isDirectory())
                      deleteData(f);
                  else {
                      System.out.println(f+"   "+f.delete());
                  }
    
            }
            file.delete();
        }
    }
    

    相关文章

      网友评论

        本文标题:Java 21 IO技术File(包含过滤器)

        本文链接:https://www.haomeiwen.com/subject/rpdujqtx.html