File

File:代表磁盘里面存在或者不存在的目录/文件,在java.IO*包里面

常用构造:

File(File parent, String child) 
从父抽象路径名和子路径名字符串创建新的 File实例。  

File(String pathname) 
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。  

File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例

当file作为文件:

  1. 创建文件对象给的路径文件不存在的时候:
//创建文件对象:
//1、当创建的文件不存在的时候:
String filePath="1129\\src\\filedemo\\FileDemo1.java";
File file=new File(filePath);
System.out.println(file.getPath());
//获得相对路径:1129\src\filedemo\FileDemo1.java
System.out.println(file.getAbsolutePath());
//获得绝对路径:E:\preview\JavaSE\1129\src\filedemo\FileDemo1.java
System.out.println(file.canExecute());//是否可执行:false
System.out.println(file.canRead());//是否可读:false
System.out.println(file.exists());//判断文件是否存在:false
System.out.println(file.getName());//得到文件名和后缀:FileDemo1.java
System.out.println(file.isFile());//判断文件是否是一个文件:false
System.out.println(file.lastModified());//获取最新操作文件时间:毫秒
System.out.println(file.length());//0
System.out.println(File.pathSeparator);//  ;
System.out.println(File.pathSeparatorChar);//  ;
System.out.println(File.separator);//  \
System.out.println(File.separatorChar);//  \
  1. 创建文件路径存在的时候
String filePath="1129\\src\\filedemo\\FileDemo.java";
File file=new File(filePath);
System.out.println(file.getPath());
//获得相对路径:1129\src\filedemo\FileDemo.java
System.out.println(file.getAbsolutePath());
//获得绝对路径:E:\preview\JavaSE\1129\src\filedemo\FileDemo.java
System.out.println(file.canExecute());//是否可执行:true
System.out.println(file.canRead());//是否可读:true
System.out.println(file.exists());//判断文件是否存在:true
System.out.println(file.getName());//得到文件名和后缀:FileDemo.java
System.out.println(file.isFile());//判断文件是否是一个文件:true
System.out.println(file.lastModified());//1669819935506(最新操作日期的毫秒数)
System.out.println(file.length());//2574

当file作为目录:

String dir="src\\filedemo1";
File directory=new File(dir);
System.out.println(directory.getPath());
//获得相对路径:src\filedemo1
System.out.println(directory.getAbsolutePath());
//获得绝对路径:E:\preview\JavaSE\src\filedemo1
System.out.println(directory.canExecute());//是否可执行:false
System.out.println(directory.canRead());//是否可读:false
System.out.println(directory.exists());//判断目录是否存在:false
System.out.println(directory.getName());//得到目录名:filedemo1
System.out.println(directory.isFile());//判断文件是否是一个文件
System.out.println(directory.lastModified());//0(最新操作日期的毫秒数)
System.out.println(directory.length());//0
System.out.println(directory.isDirectory());//判断是否是一个目录
File[] files = dir.listFiles();//查看一级子目录下的所有文件和目录

例题:将给定目录下的文件全部展示:

//因为多次调用,所以可以用递归的方法来进行查找
private static void findChild(File file) {
    if(!file.exists()){
        System.out.println("目录不存在!");
    }
    File[] files = file.listFiles();
    for (File file1 : files) {
        if (file1.isDirectory()) {
            System.out.println(file1);
            findChild(file1);
        }
        else if(file1.isFile()) {//不是目录就是文件
            System.out.println(file1);
        }
    }
}

private static void demo4() {
    String path = "1129\\src";
    File dir = new File(path);
    findChild(dir);//查找到src下面的所有文件
}

将输出的文件夹一层层展示:

private static void findChild1(File file,String s) {
    if(!file.exists()){
        System.out.println("文件不存在!");
    }
    File[] files = file.listFiles();
    for (File file1 : files) {
        System.out.println(s+file1.getName());
        if (file1.isDirectory()) {
            findChild1(file1,"| "+s);
        }
    }
}

输出内容:

|-com
| |-liku
| | |-demo1.java
| | |-study
| | | |-demo1.java
|-exercise.java
|-filedemo
| |-FileDemo.java
|-Student.java

文件资源过滤:

File file=new File("1129");
file.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().endsWith("java");
    }
});

例题:筛选文件后缀为java的文件:

public static void main(String[] args) {
        filter(new File("CollectionDemo"),"java");
    }
private static void filter(File file,String s) {
    File[] file1 =file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            if(pathname.isDirectory())return true;//是目录的直接不过滤
            return pathname.getName().endsWith(s);
        }
    });
    for (File file2 : file1) {
        if(file2.isDirectory())filter(file2,s);
        else System.out.println(file2.getName());
    }

}
posted @ 2022-11-30 23:35  Liku007  阅读(115)  评论(0编辑  收藏  举报