• File类。


    File类:

    java.io.File 类。是文件和文件夹目录名的抽象表示形式。

    可以用File对文件和文件夹进行 创建,删除,获取等操作。

    File类的一些静态成员变量:

      static String pathSeparator :路径分隔符, Windows:分号 Linux:冒号。

      static String separator :文件名称分隔符 Windows:    Linux: /  。

    File类的构造方法。

    File (String pathname)  通过给定的路径名字创建实例。

      路径可以是文件或文件夹名,可以相对路径也可以绝对路径,可以存在也可不存在(创建

      File对象,只是把给定路径封装为File对象,不考虑真假)。

    File(String parent,String child) 通过给定的父路径和子路径,创建实例。

      好处:子路径父路径单独写,用起来灵活。

    File(File parent,String child) ......

      好处:1、灵活  2、 父路径是File类型,可以用File的方法进行一些操作。

    File类获取功能的一些方法:

    public String getAbsolutePath() : 返回绝对路径名字符串。

    public String getPath() :转换为路径的字符串格式。

    public String getName() : 返回File表示的文件或目录名称  (尾部部分)

    public long Length() :  返回此File表示的文件的长度。

        文件夹没有大小概念,所以不能获取文件夹大小。如果路径不存在,返回0.

    File类判断功能的一些方法:

    public boolean exists(); 此File表示的文件或文件夹是否实际存在。

    public boolean isDirectory()  路径是否为目录。

    public boolean isFile()  路径是否为文件。

    File类创建和删除功能的一些方法:

    public boolean createNewFile() : 文件不存在时,创建文件。

    public boolean mkdir() :  创建单级文件夹。

    public boolean mkdir() :  创建单级或多级文件夹。

    public boolean delete() :  删除文件或文件夹。 直接删除,不进回收站。

      删除成功,返回true。文件夹中有内容,或路径不存在,返回false。

    File类目录的遍历。

    public String[ ] list() ; 把路径下的所有文件或文件夹名称,存到数组中。

    public File[ ] listFiles(); 把路径下的所有文件和文件夹封装为File对象,存在File数组中。

    public class main {
        public static void main(String[] args) throws IOException {
           File file=new File("C:\Users\天\Desktop\平时实验作业");
            ReadFile(file);
        }
        public static void ReadFile(File file){
            for (File f:file.listFiles()){
                if (f.isDirectory()){
                    System.out.println(f.getName()+":");
                    ReadFile(f);
                }
                else {
                    System.out.println(f.getName());
                }
            }
        }
    }

    FileFilter:文件过滤器。

    在File类中,有两个和listFiles重载的方法,方法的参数传递就是过滤器。

    File[ ] listFiles(FileFilter filter) 

    java.io.FileFilter接口: 用于File对象的过滤器,作用:用来过滤文件(File对象)。

      抽象方法: boolean accept(File pathname):测试指定抽象路径名是否应该包含在某个路径列                 表中。参数: File pathname: 用listFiles遍历目录,得到每一个文件对象。

    File[ ] listFiles(FilenameFilter filter)

    java.io.FilenameFilter 接口:实现此接口的类实例可用于过滤文件名。

      抽象方法:boolean accept(File dir,String name)

      参数:File dir: 构造方法中传递的被遍历的目录。

         String name: 用listFiles遍历目录,获取每个文件或文件夹名。

    注意: 两个过滤器接口都没有实现类,需要自己写实现类,并重写accept,定义过滤规则。

    过滤器原理:

      1、listFile方法一共做了三件事:第一,对构造方法中传递的目录进行遍历,获取每个文件/夹

        封装为File对象。第二,调用参数传递的过滤器中的accept()。第三、把每个File对象

        传递给accept()的参数,pathname。

      2、accept方法的返回值为true:把传过去的File对象保存到File数组,false:不保存。

    查找所有.zip 文件:

    public class main {
        public static void main(String[] args) throws IOException {
           File file=new File("C:\Users\天\Desktop\平时实验作业");
            ReadFile(file);
        }
        public static void ReadFile(File file){
            for (File f:file.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    return pathname.getName().toLowerCase().endsWith(".zip")|| pathname.isDirectory();
                }
            })){
                if (f.isDirectory()){
                    ReadFile(f);
                }
                else
                    System.out.println(f.getName());
    
            }
        }
    }

    lambda简化版:

    public class main {
        public static void main(String[] args) throws IOException {
           File file=new File("C:\Users\天\Desktop\平时实验作业");
            ReadFile(file);
        }
        public static void ReadFile(File file){
            for (File f:file.listFiles(pathname->pathname.getName().toLowerCase().endsWith(".zip")|| pathname.isDirectory()
    )){
                if (f.isDirectory()){
                    ReadFile(f);
                }
                else
                    System.out.println(f.getName());
    
            }
        }
    }
  • 相关阅读:
    1、springcloud gateway
    -webkit-overflow-scrolling:touch 相关
    SpringBoot(一)原理剖析:SpringApplication启动原理
    JAVA基础面试题
    JVM面试题
    排序(四)选择排序:简单选择排序
    排序(三)插入排序:简单插入排序和希尔排序
    排序(二)交换排序:冒泡排序与快速排序
    排序(一)简介
    多线程面试题
  • 原文地址:https://www.cnblogs.com/zhangyuhao/p/10840531.html
Copyright © 2020-2023  润新知