文件File类

文件File类

1、File类构造方法

A.三种构造
    public File(String pathname)        //参数: 文件的路径【推荐】
    public File(String parent, String child) //参数: 父文件路径  和 子文件名称
    public File(File parent, String child) //参数: 父文件的对象 和 子文件的名称

2、File类常用方法

A.增(创建)
public boolean createNewFile() //创建文件
public boolean mkdir() //创建文件夹
public boolean mkdirs() //创建文件夹【推荐】
B.删(删除)
public boolean delete() //不走回收站,文件可以直接删除,文件夹需要清空子文件删除
C.改(修改)
public boolean renameTo(File dest)  //修改文件名称
D.查(获取和判断)
public String getAbsolutePath() //获取绝对路径
public String getPath()  //获取File的构造方法路径
public String getName()  //获取File的名字
public long length()     //获取文件的大小(文件夹的大小,是所有文件大小之和)
public String[] list()   //获取下一层子文件.字符串数组
public File[] listFiles()    //获取下一层子文件.File对象数组【推荐】
public boolean exists()  //判断文件或者文件夹是否存在
public boolean isDirectory() //判断是否是文件夹
public boolean isFile() //判断是否是文件

3、注意事项

A. 路径问题
a.相对路径:不带盘符,在idea的相对路径是 相对于项目路径,对于module下面的文件夹,需要加上module名称
b.绝对路径: 带有盘符,需要给出完整的路径
B. 创建文件或文件夹
根据方法的名称来确定是文件还是文件夹,不是根据路径来确定

文件过滤器

1、递归遍历文件夹的代码

A. 三参数问题 (高内聚"独立"与低耦合"依赖"思想)
public static void diGuiFile(File mFile,List<File> dirList,List<File> fileList)
B. 拓展案例:
a.递归获取所有的文件和文件夹信息,打印目录
b.递归删除文件夹思想,见到文件就删除
c.递归获取子文件思想,筛选集合数据
d.递归获取所有文件夹的大小
e.递归获取每种文件的数目

2、文件过滤器 FileFilter 的使用方式<筛选所有的java文件数据>

A. 匿名内部类用法
File[] fileArr = mFile.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().endsWith(".java")||pathname.isDirectory();
    }
});
B. Lambda表达式用法
File[] fileArr =mFile.listFiles((f)->f.getName().endsWith("java")||f.isDirectory());

综合案例

找出某一文件夹中所有的某种格式文件
package code.test;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class test1217 {
    public static void main(String[] args) {
        String path = "f:\\音乐";//指定路径文件夹
        
        String format = ".mp3";//指定格式文件
        
        List<File> f1 = new ArrayList<>();//文件集合
        
        List<File> f2 = new ArrayList<>();//文件夹集合
        
        File f = new File(path);//创建文件对象
        
        getAllFile(f, f1, f2);//递归方法
        
        int count = 0;//指定格式文件计数器
        
        //遍历集合匹配指定格式文件并打印文件路径
        for (int i = 0; i < f1.size(); i++) {
            if (f1.get(i).getName().toLowerCase().endsWith(format)) {
                System.out.println(f1.get(i));
                count++;
            }
        }
        System.out.println("文件夹有" + (f2.size() - 1) + "个");
        System.out.println("文件有" + (f1.size()) + "个");
        System.out.println(format + "文件有" + count + "个");

    }
    private static void getAllFile(File f, List<File> f1, List<File> f2) {
        if (f.isFile()) {
            f1.add(f);
        } else if (f.isDirectory()) {
            f2.add(f);
            File[] files = f.listFiles();
            for (File file : files) {
                getAllFile(file, f1, f2);
            }
        }
    }
}
文件过滤器查找某一格式文件(lambda表达式格式)

public class lambdaguolueqi {
    public static void main(String[] args) {
        File f = new File("f:");
        getAllFile(f);
    }
    public static void getAllFile(File a) {
        File[] f = a.listFiles(pathname ->pathname.isDirectory()||pathname.getName().endsWith(".java"));
        for (File file : f) {
            if (file.isDirectory()) {
                getAllFile(file);
            } else {
                System.out.println(file);
            }
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值