JavaIO流之File类

JavaIO流之File类

文章目录

  • JavaIO流之File类
    • 1.File类
      • 1.1常量字段
      • 1.1构造方法
      • 1.2普通方法
      • 1.3File类的应用
    • 2.文件过滤器
      • 2.1自定义文件过滤器
      • 2.2File类文件过滤方法
    • 3.删除文件夹的方法

  • 文件:计算机文件是以计算机硬盘为载体存储在计算机上的数据集合。
  • 文件夹:文件夹是用来组织和管理磁盘文件的一种数据结构。

1.File类

1.1常量字段

static String separator 获取当前操作系统的路径分隔符

1.1构造方法

File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 

1.2普通方法

  • 创建功能
boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 
boolean mkdir() 创建此抽象路径名指定的目录。 (创建文件夹,如果存在,就不创建了,并返回falseboolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 (创建多重目录)
  • 删除功能
 boolean delete() 删除此抽象路径名表示的文件或目录。 
  • 修改功能
boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。 
void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
  • 基本获取功能
File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。 
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 (获取绝对路径)
String getPath() 将此抽象路径名转换为一个路径名字符串。 (获取相对路径)
String getName() 返回由此抽象路径名表示的文件或目录的名称。
long length() 返回由此抽象路径名表示的文件的长度,即文件大小,字节数。
String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 
File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 
long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间,单位是毫秒值。

String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 
String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 
File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
static File[] listRoots() 列出可用的文件系统根。
  • 判断功能
 boolean exists() 测试此抽象路径名表示的文件或目录是否存在。  
 boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 
 boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
 boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。

1.3File类的应用

  • 题目:删除一个指定的文件目录:使用递归方法,先删除该文件夹下的所有文件及文件夹,再删除本目录。
	static void deleteFolder(File file){
        //如果文件或者目录存在
        if(file.exists()){
            //如果是文件
            if(file.isFile()){
                //删除文件
                file.delete();
            }else{//如果是文件夹
                //获取当前文件夹下所有的目录及文件
                File[] files = file.listFiles();
                //遍历目录和文件
                for (File f : files) {
                    //删除目录和文件
                    deleteFolder(f);
                }
                //删除空目录
                file.delete();
            }
        }
    }

2.文件过滤器

2.1自定义文件过滤器

	/**
     *
     * @param file 路径名
     * @param suffix 过滤的文件类型
     * @return 目标文件的数组
     */
    public static File[] fileFilter(File file,String suffix){
        //获取当前目录下所有的文件(为了简单,忽略了文件夹)
        File[] files = file.listFiles();
        List<File> list = new ArrayList<>();
        //遍历
        for (File f : files) {
            //判断:如果文件的后缀为传入的后缀名匹配
            if(f.getName().endsWith(suffix))
                //将当前文件添加到list集合中
                list.add(f);
        }
        //调用List类的toArray方法,将List转为数组
        return list.toArray(new File[list.size()]);
    }

2.2File类文件过滤方法

    File file = new File("E:/test");
	//listFiles方法的参数是FilenameFilter接口的实现类。
    File[] files = file.listFiles(new FilenameFilter() {
        @Override
        //dir :传入的是父路径,重写accept方法
        public boolean accept(File dir, String name) {
            return name.endsWith("txt");
        }
    });
    for (File fs : files) {
        System.out.println(fs);
    }
  • lambda表达式的方式
File file = new File("E:/test");
//lambda表达式
File[] files = file.listFiles((File dir,String name)->name.endsWith("txt"));
List list = Arrays.asList(files);
//list.forEach(n-> System.out.println(n));
list.forEach(System.out::println);

3.删除文件夹的方法

	/**
     * @param file 抽象目录或者文件
     * @return
     */
    static void deleteFolder(File file){
        //如果文件或者目录存在
        if(file.exists()){
            //如果是文件
            if(file.isFile()){
                //删除文件
                file.delete();
            }else{//如果是文件夹
                //获取当前文件夹下所有的目录及文件
                File[] files = file.listFiles();
                //遍历目录和文件
                for (File f : files) {
                    //删除目录和文件
                    deleteFolder(f);
                }
                //删除空目录
                file.delete();
            }
        }
    }

你可能感兴趣的:(JavaIO流之File类)