Java之File类(构造方法,路径和创建,查找)和文件过滤器FileFilter接口

一.File类

  • 1.表示文件
  • 2.表示文件夹
  • 3.表示路径(可以是错误路径)
  • 路径分隔符(具有跨平台性)
  • Mac : / :
  • window : \ ;

路径分割符代码:

public class Kll {
    public static void main(String[] args) {
    // 路径分割符
        String s1 = File.pathSeparator;
        System.out.println(s1);
        String s2 = File.separator;
        System.out.println(s2);
    }
}

Mac平台运行结果:这里写图片描述

二.构造方法

File类的构造方法1
只有一个String类型的参数,即文件的路径。

  • 绝对路径(硬盘上的真实位置)
  • /Users/lanou/Desktop/Test/kll.txt
  • 相对路径
  • 对于代码来说,路径是相对于当前的工程
  • 注意:如果使用相对路径,不能以/开头
  • 如果路径以 / 开头,系统就会按绝对路径寻找文件

代码:

// src/klp.txt文件是相对路径,要现在项目的src里创建一个klp.txt文件
public class Kll {
    public static void main(String[] args) {
        File file1 = new File("src/klp.txt");
        // 判断该路径是否存在的方法
        boolean b1 = file1.exists();
        System.out.println(b1);
        // 获取绝对路径的方法
        String absolutePath = file1.getAbsolutePath();
        // 获取传入的路径
        String path = file1.getPath();
        System.out.println(path);

        System.out.println(file1);
    }
}

File类的构造方法2
两个String类型的参数,第一个父级文件的路径,第二个是子级路径。

String parent = "/Users/lanou/Desktop/Test";
String child = "kll.txt";
File file = new File(parent, child);
// child是文件的名称,parent是文件所在的文件夹的绝对路径

File类的构造方法3
第一个是File类型,第二个是String类型;File类要给出父级文件,String类还是子级路径。

File parentFile = new File(parent);
File file2 = new File(parentFile, child);

三.File类方法

1.判断方法

// 判断路径是否存在 exists()
File file = new File("/Users/lanou/Desktop/Test/kll.txt");
// 判断路径是否是文件夹 isFile()
boolean b1 = file.isFile();
// 判断路径是否是文件 isDirectory()(
boolean b2 = file.isDirectory();
// 判断是不是隐藏文件
boolean b3 = file.isHidden();

2.创建方法
是根据文件的路径创建的,所以要在对象创建时给出文件名

File 对象名 = new File(“文件放置的位置的路径/要创建的文件名”);
File file = new File("/Users/lanou/Desktop/Test/klp.txt");
// 创建文件  createNewFile()
// 注意: 1.该文件只会创建一次  2.该方法只能创建文件  3.不填后缀名,创建出来的也是文件
boolean b1 = file.createNewFile();
System.out.println(b1);
// 创建单个文件夹方法  mkdir()
// 注意: 1. 即使带上文件后缀,创建出来的也是文件夹
File file2 = new File("/Users/lanou/Desktop/Test/hell.txt");
boolean b2 = file2.mkdir();
System.out.println(b2);
// 创建多层级文件夹方法(单层级也可以创建出来)  mkdirs()
File file3 = new File("/Users/lanou/Desktop/Test/a/b/c/d");
boolean b3 = file3.mkdirs();

3.删除方法

// 删除方法(直接删除,不会去回收站)
// delete方法  1.可以删除文件 2.可以删除空文件夹 
File file = new File("/Users/lanou/Desktop/Test/a");
boolean b1 = file.delete();

4.文件获取方法

// 获取文件夹下所有文件
File file1 = new File("/Users/lanou/Desktop/Test");
// list 只能获取一级目录的文件名称
String[] list = file1.list();
// lists 返回一级目录的文件的绝对路径
File[] files = file1.listFiles();

// 获取文件的字节数 .length()  返回值是Long类型的
// Mac下:英文1个字节,中文3个字节
// Win下:英文1个字节,中文2个字节

打印某文件夹下的所有文件的代码例子:

public class Kll {
    public static void main(String[] args) {
        File file = new File("/Users/lanou/Desktop/Test");
        // 静态方法 类名调用
        printFile(file);
    }
    // 打印方法 递归
    public static void printFile(File file) {
        // 获取该路径下的所有一级目录文件
        File[] files = file.listFiles();
        // 遍历文件数组
        for (File file2 : files) {
            // 判断是不是文件
            if (file2.isFile()) {
                // 是文件
                System.out.println(file2);

            }else {
            // 是文件夹,调用本方法,继续判断
                printFile(file2);
            }
        }
    }
}

四.文件过滤器FileFilter接口

实现接口的过滤方法

  • 返回false 数组中没有数据
    • 返回true 所有一级目录文件都在数组内保存在(和没参数一样)
    • 参数 File pathname 是一级目录下的所有文件

      • 根据这个接口中的方法返回值
    • true 就会把该文件存入到listFiles数组中
    • false 不会存入到 数组中

      • 综上
    • 数组中保存什么完全根据这个方法的返回值来看

方法类实现接口代码:

// 只存文件类型
class MyFileFilter implements FileFilter{
    @Override
    public boolean accept(File pathname) {
    // 判断文件类型
        if (pathname.isDirectory()) {
        // 是文件夹 不保存
            return false;
        }
        // 文件保存
        return true;
    }

猜你喜欢

转载自blog.csdn.net/KongLingLei_08225/article/details/82667090