Java文件File类总结

创建文件

通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。

File(File parent, String child);

通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

File(String pathname)

根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(String parent, String child)

通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

File(URI uri)

创建目录:

File类中有两个方法可以用来创建文件夹:

● mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
● mkdirs()方法创建一个文件夹和它的所有父文件夹。

public class FileDemo01 {
    public static void main(String[] args) {
        //创建文件
        File f1 = new File("E:\\itcase\\java.txt");
        System.out.println("f1.createNewFile()");
        System.out.println("--------");

        //创建目录
        File f2 = new File("E:\\itcase\\JavaWEB\\HTML");
        System.out.println(f2.mkdir());
        System.out.println("--------");

        //创建多级目录
        File f3 = new File("E:\\itcase\\javase.txt");
        System.out.println(f3.mkdirs());
        System.out.println("--------");

        File f4 = new File("E:\\itcase\\javase.txt");
        System.out.println("f4.createNewFile()");
    }
}

常用方法:

在这里插入图片描述
在这里插入图片描述

public class FileDemo02 {
    public static void main(String[] args) {
        File f = new File("myFile\\java.txt");
        //public boolean isDirectory():测试此抽象路径名表示的File是否为目录
        //public boolean isFile():测试此抽象路径名表示的File是否为文件
        //public boolean exists():测试此抽象路径名表示的File是否存在
        System.out.println(f.isDirectory());
        System.out.println(f.isFile());
        System.out.println(f.exists());
        System.out.println("--------");

        //public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
        //public String getpath():将此抽象路径名转换为路径名字符串
        //oublic String getName():返回由此抽象路径名表示的文件或目录的名称
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getPath());
        System.out.println(f.getName());
        System.out.println("--------");

        //punlic String[] list():返回此抽象路径名表示的目录中的名称字符串、
        //public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组
        File f2 = new File("E:\\itcase");
        String[] strArray = f2.list();
        for(String str : strArray)
        {
            System.out.println(str);
        }
        System.out.println("--------");


        File[] fileArray = f2.listFiles();
        for(File file : fileArray) {
            if(file.isFile()) {
                System.out.println(file.getName());
            }
        }
    }
}

输出样例:
在这里插入图片描述

删除功能

方法名:public boolean delete()
说明:删除由此抽象路径名表示的文件或目录

绝对路径和相对路径的区别

● 绝对路径: 完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如: E:\itcast\java.txt
● 相对路径: 必须使用取自其他路径名的信息进行解释。例如: myFile\Vjava.txt

public class FileDemo03 {
    public static void main(String[] args) throws IOException {
        File f1 = new File("myFile\\java.txt");
        System.out.println(f1.createNewFile());
        //删除当前目录下的java.txt文件
        System.out.println(f1.delete());
        System.out.println("--------");


        //在当前模块目录下创建itcase目录
        File f2 = new File("myFile\\itcase");
        System.out.println(f2.mkdir());
        System.out.println(f2.delete());

        //在当前模块下创建一个目录itcase,然后在该目录下创建一个文件java。txt
        File f3 = new File("myFile\\itcase");
        System.out.println(f3.mkdir());
        File f4 = new File("myFile\\itcase\\java.txt");
        System.out.println(f4.createNewFile());
        
        //删除当前模块下的目录itcase
        System.out.println(f4.delete());
        System.out.println(f3.delete());

    }
}

注意事项:

● 如果一个目录中有内容(目录, 文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录

递归打印多级目录

package com.itheima;

import java.io.File;

public class FileDemo04 {
    public static void main(String[] args) {
        File file = new File("e:\\itcase");
        getAllFile(file);
    }
    public static void getAllFile(File dir){
        System.out.println(dir);
        File[] files = dir.listFiles();
        for(File f : files) {
            if(f.isDirectory()) {
                getAllFile(f);
            }else{
                System.out.println(f);
            }
        }

    }
}

输出样例:在这里插入图片描述

搜索后缀为.java的文件

package com.itheima;

import java.io.File;

public class FileDemo04 {
    public static void main(String[] args) {
        File file = new File("e:\\itcase");
        getAllFile(file);
    }
    public static void getAllFile(File dir){

        File[] files = dir.listFiles();
        for(File f : files) {
            if(f.isDirectory()) {
                getAllFile(f);
            }else{
                String s = f.toString();
                boolean b =s.endsWith(".java");
                if(b) {
                    System.out.println(f);
                }
            }
        }

    }
}

输出样例:
在这里插入图片描述

文件过滤器:FileFilter和FilenameFilter接口

使用文件过滤器需要自己定义接口的实现类。

import java.io.File;

public class FileDemo04 {
    public static void main(String[] args) {
        File file = new File("e:\\itcase");
        getAllFile(file);
    }
    public static void getAllFile(File dir){

        File[] files = dir.listFiles(new FileFilterImpl());
        assert files != null;
        for(File f : files) {
            if(f.isDirectory()) {
                getAllFile(f);
            }else{
                System.out.println(f);
            }
        }

    }
}

import java.io.File;
import java.io.FileFilter;

public class FileFilterImpl implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        if(pathname.isDirectory()) {
            return true;
        }
        return pathname.getName().toLowerCase().endsWith(".java");
    }
}


输出样例:在这里插入图片描述
使用Lambda优化上面代码

package com.itheima;

import java.io.File;

public class FileDemo04 {
    public static void main(String[] args) {
        File file = new File("e:\\itcase");
        getAllFile(file);
    }
    public static void getAllFile(File dir){
		//使用Lambad优化
        File[] files = dir.listFiles(pathname->pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java"));

        for(File f : files) {
            if(f.isDirectory()) {
                getAllFile(f);
            }else{
                System.out.println(f);
            }
        }

    }
}

输出样例:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值