File类的使用(IO流前置基础)

一.操作文件

1.File对象的创建
创建方式:
File(String pathname)              文件的抽象路径名(文件的路径+文件名)
File(String parent, String child)  父路径+文件名
File(File parent, String child)    文件夹+文件
    
    
例子:
File file = new File("G:\\java学习资料\\java学习笔记\\IO\\bb");
File file = new File("G:\\java学习资料\\java学习笔记\\IO","bb");
File file1 = new File("G:\\java学习资料\\java学习笔记\\IO");
String child = "bb";
File file1 = new File(file1, child);
2.创建文件夹(文件)

有好几个创建文件的方法,但是都有区别,具体看一下代码。

boolean createNewFile() :只创建文件

boolean createNewFile() 
1. 需要File对象调用:根据File对象中的pathname来创建文件
2. 如果文件已经存在,返回false
3. 如果文件路径不存在,抛出IO异常
4. 此方法只能够创建文件(传统理解的文件,不会创建文件夹)
    
//案例
public static void main(String[] args) throws IOException {
        File file = new File("G:\\java学习资料\\java学习笔记\\IO\\bb");
        boolean result = file.createNewFile();
        if(result){//该文件不存在
            System.out.println("创建成功!");
        }else {//该文件存在
            System.out.println("创建文件失败");
        }
    }

boolean mkdir():只创建对应文件夹

boolean mkdir() 
1. 需要File对象调用:根据File对象中的pathname来创建文件夹
2. 如果文件夹已经存在,返回false
3. 如果路径不存在,返回false,没有抛出异常	  
public static void main(String[] args) throws IOException {
    File file = new File("G:\\java学习资料\\java学习笔记\\O");
    boolean result = file.mkdir();
    if(result){//该文件不存在
        System.out.println("文件夹创建成功!");
    }else {//该文件存在
        System.out.println("创建文件夹失败");
    }
}

boolean mkdirs()  :自动创建路径文件夹

boolean mkdirs()  
1.如果路径不存在,会自动先创建路径所需的文件夹
 //创建多级目录
 public static void main(String[] args) {
        File directory = new File("path/to/directory");

        boolean created = directory.mkdirs();
        if (created) {
            System.out.println("目录创建成功");
        } else {
            System.out.println("目录已存在或无法创建");
        }
    }
3.删除文件(包括文件夹)

boolean delete() :删除文件,只能删除空的文件夹

/**
 * 使用递归删除文件夹
 * @author EDY
 *
 */
public class test_04 {
    public static void main(String[] args) throws IOException {
        File file = new File("G:\\测试文件");
        Boolean result = deleteAll(file);

        if(result){
            System.out.println("删除文件夹成功!");
        }else {
            System.out.println("删除文件夹失败!");
        }
    }

    private static Boolean deleteAll(File file) {
        if(file.isDirectory()){
            File[] files = file.listFiles();
            //文件夹不为空
            if(files.length>0){
                for (File file1 : files) {
                    deleteAll(file1);
                }
            }
        }
        return file.delete();
    }

}

二.File对象的常用方法

1.判断系列方法
boolean	isDirectory() 判断是否是一个目录
boolean	isFile() 	判断是否是一个文件
boolean exists()     测试此抽象路径名表示的文件或目录是否存在 
2.基本的list方法
static File[] listRoots() 列出可用的文件系统根(操作系统上面的盘符)
String[] list()   	      返回当前的文件夹对象下面一层的所有的文件(文件夹)的名字
File[] listFiles()	      返回当前的文件夹对象下面一层的所有的文件(文件夹,以及文件)(File对象的形式)

 三.文件和文件名过滤器

String[] list(FilenameFilter filter)  
File[] listFiles(FileFilter filter)  
File[] listFiles(FilenameFilter filter) 
1.自定义过滤器(通过String.endwith())

   获取指定后缀名的文件

//递归的方式
public static void main(String[] args) throws IOException {
        String suffix ="txt";
        ArrayList<File> fileList = new ArrayList<>();
        filters(fileList,file,suffix);
        System.out.println(fileList);
    }
    private static void filters(List<File> fileList, File file,String suffix) {
        if(file.isDirectory()){
            File[] listFiles = file.listFiles();
            for (File listFile : listFiles) {
                filters(fileList,listFile,suffix);
            }
        }
        if(file.getName().endsWith(suffix)){
            fileList.add(file);
        }
    }
2.文件名过滤器
  • 参数类型:接受一个 FilenameFilter 对象作为参数。
  • 过滤方式:通过自定义的 FilenameFilter 实现类来筛选文件。你需要实现 FilenameFilter 接口中的 boolean accept(File dir, String name) 方法,根据自己的过滤逻辑返回 true 或 false 来决定是否接受该文件。
  • 返回结果:返回满足过滤条件的文件数组,如果没有匹配的文件,则返回 null
/**
     * 文件名过滤器
     * @param file
     * @param suffix
     * @return
     */
    private static File[] fileNameFilter(File file,String suffix) {
        return file.listFiles((dir, name) -> name.endsWith(suffix));
    }
3.文件过滤器
  • 参数类型:接受一个 FileFilter 对象作为参数。
  • 过滤方式:通过自定义的 FileFilter 实现类来筛选文件。你需要实现 FileFilter 接口中的 accept(File pathname) 方法,根据自己的过滤逻辑返回 true 或 false 来决定是否接受该文件。
  • 返回结果:返回满足过滤条件的文件数组,如果没有匹配的文件,则返回 null
/**
     * 文件名过滤器
     * @param file
     * @param suffix
     * @return
     */
    private static File[] fileNameFilter(File file,String suffix) {
        return file.listFiles((dir, name) -> name.endsWith(suffix));
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值