欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA基础总结(九) ---- File类

程序员文章站 2022-06-16 21:22:40
...

JAVA基础总结(九) ---- File类

java.io.File类

java把电脑中的文件和文件夹封装为一个File类

File类与系统无关,任何操作系统都可以使用类中的方法

File类的静态方法

windows和linux系统中路径分隔符与文件名分隔符不同,因此路径不能写死:

//路径分隔符
    String pathSeparator = File.pathSeparator;
    System.out.println(pathSeparator); //Windows 分号;Linux 冒号:
    //文件名称分割符
    String separator = File.separator;
    System.out.println(separator); //Windows \  Linux /

写为:

"C:" + File.separator + "develop" + File.separator + "a.txt"

File类的构造方法

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

File(String parent,String child) 根据父路径与子路径创建一个新的File实例

File(File parent,String child) 根据父路径与子路径创建一个新的File实例

File类常用方法

用于获取文件路径信息

          File f = new File("d:/aaa/bbb.java");     
          System.out.println("文件绝对路径:"+f.getAbsolutePath());
          System.out.println("文件构造路径:"+f.getPath());
          System.out.println("文件名称:"+f.getName());
          System.out.println("文件长度:"+f.length()+"字节");

用于判断:

  • public boolean exists() :此File表示的文件或目录是否实际存在。
  • public boolean isDirectory() :此File表示的是否为目录。
  • public boolean isFile() :此File表示的是否为文件。

用于创建删除文件:

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  • public boolean delete() :删除由此File表示的文件或目录。
  • public boolean mkdir() :创建由此File表示的目录。
  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

目录的遍历

注意list方法与listFiles方法返回的对象区别

    File file = new File("C:\\xxx\\xxx\\xxx\\xxx");
    String[] list = file.list();
    for(String fileName:list){
        System.out.println(fileName);
    }
    File[] files = file.listFiles();
    for(File file1:files){
        System.out.println(file1);
    }

使用递归打印多级目录

public class Demo03Recurison {
    public static void main(String[] args) {
        //使用递归打印多级目录
        File file = new File("C:\\aaa\\doc");
        getAllFile(file);

    }
    public static void getAllFile(File dir){
        File[] files = dir.listFiles();
        for(File f:files){
            if(f.isDirectory()){
                getAllFile(f);
            }else{
                System.out.println(f);
            }
        }
    }
}

文件过滤器

在File类中有两个和ListFiles重载的方法,方法的参数为文件过滤器

java.io.FileFilter接口:用于File对象的过滤器

java.io.FilenameFilter接口:用于过滤文件名称

定义FileFilter的实现类,在accept方法中定义过滤规则

public class FileFilterImpl implements FileFilter {
    public boolean accept(File pathname) {
        if(pathname.isDirectory())return true;
        return pathname.getName().toLowerCase().endsWith(".png");
    }
}

使用重载的方法传入过滤器

 public static void main(String[] args) {
        File file = new File("C:\\xxx\\doc");
        getAllFile(file);
    }

    public static void getAllFile(File dir){
        File[] files = dir.listFiles(new FileFilterImpl()); //传递过滤器对象
        for(File f:files){
            if(f.isDirectory()){
                getAllFile(f);
            }else{
                System.out.println(f);
            }

        }
    }

或者使用匿名内部类优化

相关标签: FIle类