Java – File文件

简介

File 对象表示一个路径,可以是文件路径、也可以是文件夹的路径,File 可以处理文件各种读写操作

 

构造函数

File 文件有三个基本构造函数分别如下

// 通过字符串定义文件路径
public File(String pathname);

// 通过父路径加文件名定义文件路径 
public File(String parent, String child);

// 通过带有父路径的File对象和文件名定义文件路径
public File(File parent, String child)

 

File文件方法(判断和获取)

// 判断此路径名表示的 File 是否为文件夹
public boolean  isDirectory();

// 判断此路径名表示的File是否为文件
public boolean  isFile();

// 判断File文件是否存在
public boolean  exists();

// 返回文件的大小(字节数)
public long  length();

// 返回文件的绝对路径
public String  getAbsolutePath();

// 返回定义文件时使用的路径
public String  getPath();

// 返回文件的名称,带后缀
public String  getName();

// 返回文件的最后修改时间(毫秒)
public long  lastModified();

 

File文件方法(创建和删除)

// 创建一个新的空文件
public boolean  createNewFile();
// 如果当前路径文件的文件是存在的,则在创建失败返回 false
// 当父级路径文件夹不存在,会抛出IO异常

// 创建单级文件夹
public boolean  mkdir();

// 创建多级文件夹
public boolean  mkdirs();

// 删除文件、空文件夹
public boolean  delete();
// delete 方法默认只能删除文件和空文件夹,delete 方法直接删除不走回收站
// 如果删除的是有内容的文件夹,则删除失败

 

删除有内容的文件夹(包括多级文件夹)

如果我们要删除一个有内容的文件夹:

1.先删除文件夹里面所有的内容

2.再删除自己

public static void delete(File path){
        File[] files = path.listFiles();
        for (File file : files) {
            if (file.isFile()){
                file.delete();
            }else {
                delete(file);
            }
        }
        // 最后再删除自己
        path.delete();
    }

 

 

File文件方法(获取和遍历)

// 获取当前该路径下所有内容
public File[] listFiles()

注意:

1.当调用者File表示的路径不存在时,返回 null

2.当调用者File表示的路径是文件时,返回 null

3.当调用者File表示的路径是一个空文件夹时,返回一个长度为0的File数组

4.当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径方在File数组中返回

5.当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径方在File数组中返回,包含隐藏文件

6.当调用者File表示的路径是需要权限才能访问的文件夹时,返回 null

 

其它遍历方法

// 列出可用的文件系统根
public static File[] listRoots();

// 获取当前该路径下所有内容(仅获取文件名或文件夹名)
public String[] list();

// 利用文件名过滤器获取当前该路径下所有内容
public String[] list(FilenameFilter filter);
// FilenameFilter 是一个接口,有一个函数式实现方法 accept
// 可以通过自定义的方式对遍历的文件进行过滤,返回 true 表示保留,false表示舍弃

// 获取当前该路径下所有内容
public File[] listFiles();

// 利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FileFilter filter);
// FileFilter 是一个接口,有一个函数式实现方法 accept
// 可以通过自定义的方式对遍历的文件进行过滤,返回 true 表示保留,false表示舍弃

// 利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FilenameFilter filter);

FileFilter 和 FilenameFilter 的区别在于接口回调方法中,FilenameFilter 接收的是 File对象,包含总路径,而FileFilter 只接收文件名。

 

示例:遍历文件

public static void main(String[] args) {
        File f = new File("E:\\");
        getAllFilesFromPath(f, "mp4");
    }

    public static void getAllFilesFromPath(File path, String suffix) {
        File[] files = path.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    // 如果是文件
                    if (file.getName().endsWith(suffix)) {
                        System.out.println(file.getAbsoluteFile());
                    }
                } else {
                    // 如果不是文件,那就是文件夹
                    getAllFilesFromPath(file, suffix);
                }
            }
        }

    }

 

统计文件类型数

public static Map<String, Integer> getDirFilesCount(File path) {
        File[] files = path.listFiles();
        HashMap<String, Integer> hm = new HashMap<>();

        for (File file : files) {
            if (file.isFile()) {
                // 如果是文件
                String[] fileSuffixs = file.getName().split("\\.");
                String fileSuffix = fileSuffixs[fileSuffixs.length - 1];
                if (hm.containsKey(fileSuffix)) {
                    // 存在这个类
                    int count = hm.get(fileSuffix);
                    hm.put(fileSuffix, ++count);
                } else {
                    // 不存在这个类
                    hm.put(fileSuffix, 1);
                }

            } else {
                // 如果是文件夹
                Map<String, Integer> sonMap = getDirFilesCount(file);
                Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();
                for (Map.Entry<String, Integer> entry : entries) {
                    if (hm.containsKey(entry.getKey())) {
                        Integer srcInt = hm.get(entry.getKey());
                        srcInt += entry.getValue();
                        hm.put(entry.getKey(), srcInt);
                    } else {
                        hm.put(entry.getKey(), 1);
                    }
                }
            }
        }
        return hm;
    }

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – File文件
File 对象表示一个路径,可以是文件路径、也可以是文件夹的路径,File 可以处理文件各种读写操作
<<上一篇
下一篇>>