File类的使用

概念:代表物理盘符中的一个文件或者文件夹

 

 

小案例:

package com.iopractise;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Date;

/**
 * File类的使用
 * 1.分隔符
 * 2.文件操作
 * 3.文件夹操作
 */
public class Demo19 {
    public static void main(String[] args) throws Exception {
//        separator();
//        fileOper();
        directoryOpe();
    }

    // 1. 分隔符
    public static void separator() {
        System.out.println("路径分隔符" + File.pathSeparator);
        System.out.println("名称分隔符" + File.separator);
    }

    public static void fileOper() throws IOException {

        // 1. 创建文件
        File file = new File("file.txt");
        if (!file.exists()) { // 是否存在
            boolean b = file.createNewFile();
            System.out.println("创建结果:" + b);
        }

        // 2. 删除文件
        // 2.1 直接删除
        boolean deleteFlag = file.delete();// 成功true
        System.out.println("文件删除是否成功:" + deleteFlag);
        // 2.2 使用jvm退出时删除
        file.deleteOnExit();//这个方法最后是没有返回值的

        // 3. 获取文件信息
        System.out.println("获取绝对路径" + file.getAbsolutePath());
        System.out.println("获取路径" + file.getPath());//该方法获取的是文件的相对路径
        System.out.println("获取文件名称" + file.getName());
        System.out.println("获取夫目录" + file.getParent());
        System.out.println("获取文件长度" + file.length());
        System.out.println("文件创建时间" + new Date(file.lastModified()).toLocaleString());

        // 4. 判断
        System.out.println("是否可写" + file.canWrite());
        System.out.println("是否是文件" + file.isFile());
        System.out.println("是否隐藏" + file.isHidden());
    }

    // 文件夹操作
    public static void directoryOpe() throws Exception{
        // 1. 创建文件夹
        File dir = new File("d:\\aaa\\bbb\\ccc");
        System.out.println("文件目录:"+dir.toString());
        if(!dir.exists()){
            //dir.mkdir(); // 只能创建单级目录
            dir.mkdirs(); // 创建多级目录
        }

        // 2. 删除文件夹
        // 2.1 直接删除
        boolean deleteFlag = dir.delete();// 只能删除最底层空目录
        System.out.println("文件夹是否删除成功:"+deleteFlag);//这里只会删除ccc这层目录,如果ccc目录下还有其他文件,这个时候,ccc目录是不会删除的。
        // 2.2 使用jvm删除
        dir.deleteOnExit();

        // 3. 获取文件夹信息
        System.out.println("获取绝对路径" + dir.getAbsolutePath());
        System.out.println("获取路径" + dir.getPath());//File(文件的路径),该方法返回的是括号中的文件路径
        System.out.println("获取文件名称" + dir.getName());
        System.out.println("获取父目录" + dir.getParent());
        System.out.println("获取文件长度" + dir.length());
        System.out.println("文件夹创建时间" + new Date(dir.lastModified()).toLocaleString());

        // 4. 判断
        System.out.println("是否是文件夹" + dir.isDirectory());
        System.out.println("是否隐藏" + dir.isHidden());

        // 5. 遍历文件夹
        File dir2 = new File("D:\\图纸");
        String[] files = dir2.list();
        for(String string : files){
            System.out.println(string);
        }
        System.out.println("================FileFilter接口的使用==================");
        // FileFilter接口的使用

        File[] files2 = dir2.listFiles(new FileFilter(){

            public boolean accept(File pathname){
                if(pathname.getName().endsWith(".xmind")){
                    return true;
                }
                return false;
            }
        });
        for(File file : files2){
            System.out.println(file.getName());
        }

    }
}

注意:File.length()方法获取的是文件的大小。(通俗的讲)

FileFilter接口

Public interface FileFilter

  .boolean accept(File pathname)

.当调用File类中listFiles()方法的时候,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可以出现在listFiles()的返回值中。

posted @ 2021-02-07 22:39  ~码铃薯~  阅读(71)  评论(0编辑  收藏  举报