专栏首页Java 学习【Java】15 File 类

【Java】15 File 类

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

1.1 创建 File 类

1.1.1 构造方法

public File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。 public File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File 实例。 public File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File 实例。

1.1.2 路径

相对路径:相对于当前文件所在路径,一般为项目根目录。 绝对路径:从盘符开始的路径,这是一个完整的路径。

tips1: 一个 File 对象代表硬盘中实际存在的一个文件或者目录,无论该路径下是否存在文件或者目录,都不影响 File 对象的创建。 tips2: Windows 与 Linux 的路径分隔符不一致( Windows是 \ ,Linux 是 / ),使用 File.separatorChar 可以拿到当前系统下的路径分隔符。

1.2 常用方法

方法名

说明

String getAbsolutePath( )

返回此 File 的绝对路径名字符串

String getPath( )

将此 File 转换为路径名字符串

String getName( )

返回由此 File 表示的文件或目录的名称

long length( )

返回由此 File 表示的文件的长度

boolean exists( )

此 File 表示的文件或目录是否实际存在

boolean isDirectory( )

此 File 表示的是否为目录

boolean isFile( )

此 File 表示的是否为文件

boolean createNewFile( )

当且仅当具有该名称的文件尚不存在时,创建一个新的空文件

boolean delete( )

删除由此 File 表示的文件或目录

boolean mkdir( )

创建由此 File 表示的目录

boolean mkdirs( )

创建由此 File 表示的目录,包括任何必需但不存在的父目录

String[ ] list( )

返回一个 String 数组,表示该 File 目录中的所有子文件或目录

File[ ] listFiles( )

返回一个 File 数组,表示该 File 目录中的所有的子文件或目录

1.3 示例

1.3.1 遍历文件夹

public class DemoRecursion {
    public static void main(String[] args) {
        //创建文件对象
        File file = new File("E:\\");
        recurstion(file);
    }
    public static void recurstion(File file) {
        //合法性判断
        if (file == null) {
            return;
        }
 
        //获取文件夹下所有的子文件或者文件夹
        File[] files = file.listFiles();
        
        //可能因为权限等问题无法获取文件夹内的文件
        if (files == null) {
            return;
        }
 
        //遍历文件数组
        for (File file1 : files) {
            if (file1.isDirectory()) {
                //是文件夹则打印文件夹路径并递归
                System.out.println(file1.getPath());
                recurstion(file1);
            } else {
                //否则打印文件路径加文件长度
                System.out.println(file1.getPath() + "\t大小是:" + ((float)file1.length() / 1024 / 1024) + "M");
            }
        }
    }
}

1.3.2 递归创建目录

public class DemoCreateFile {
    public static void main(String[] args) {
        //指定文件路径
        File file = new File("D:\\WorkSpace");
        //传递一个递归结束条件
        int i = 0;
        //调用方法
        recursion(file,i);
    }
 
    public static void recursion(File file,int i) {
        //递归结束条件
        if (i > 100) return ; 
        
        //指定创建的文件夹
        File f = new File(file,"new");
 
        //创建文件夹
        f.mkdirs();
 
        //递归调用
        recursion(f,i);
    }
}

1.3.3 递归删除

public class DemoDeleteFile {
    public static void main(String[] args) {
        //指定路径
        File file = new File("D:\\WorkSpace\\new");
 
        delete(file);
    }
 
    private static void delete(File file) {
        //判断是否存在
        if (file.exists()) {
            //判断是否是文件夹
            if (file.isDirectory()) {
                //获取文件夹内所有的文件和文件夹
                File[] files = file.listFiles();
                if (files.length > 0) {
                    //若数组长度大于0则该文件夹内有内容
                    for (File file1 : files) {
                        //遍历数组,递归文件夹
                        delete(file1);
                    }
                }
                //删除文件夹
                file.delete();
            } else {
                //不是文件夹则直接删除文件
                file.delete();
            }
        }
 
    }
}

1.3.4 查找文件

public class DemoRecursion {
    static boolean b = false;
    public static void main(String[] args) {
        //创建文件对象
        File file = new File("E:\\");
 
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的文件");
        String s = sc.next();
 
        recurstion(file,s);
        
        if (!b) {
            System.out.println("没有找到文件");
        }
    }
    
    public static void recurstion(File file,String s) {
        //合法性判断
        if (file == null) {
            return;
        }
 
        //使用过滤器获取文件夹下所有的子文件或者文件夹
        File[] files = file.listFiles(new FileFilter() {
 
            @Override
            public boolean accept(File pathname) {
                //判断是否为文件夹或者是包含查找字符串的文件名
                return file.isDirectory() || file.getName().contains(s);
            }
        });
        
        //遍历数组
        for (File file1 : files) {
            if (file1.isDirectory()) {
                //是文件夹则并递归
                recurstion(file1,s);
            } else {
                //设置找到了文件
                b = true;
                //打印文件路径
                System.out.println(file1.getPath());
            }
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Cloud Alibaba 系列之 Nacos 介绍

      Nacos 前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 s 为 Service。Nacos 致力于帮助发现、配置和...

    Demo_Null
  • 翻车!居然在这里翻车了!!!

    此前,我一直认为代码一应该比代码二更省时,毕竟 Lambda 表达式延迟执行,不用提前拼接字符串没有造成性能浪费。然而我在最近重新写 Java 基础博文的时候运...

    Demo_Null
  • Spring Cloud Alibaba 系列之 Nacos 持久化

      我们在用 Nacos 做配置中心时配置文件是需要持久化保存的,否则重启之后配置文件不久丢失了吗。我们发现就算没有配置持久化,我们添加的配置文件重启之后依然存...

    Demo_Null
  • 第53节:Java当中的IO流(上)

    在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以...

    达达前端
  • Java IO学习笔记(一):File类

    http://www.cnblogs.com/lich/archive/2011/12/10/2283445.html

    bear_fish
  • Java每日一练(2017/9/14)

    最新通知 ●回复"每日一练"获取以前的题目! ●【新】Android视频更新了!(回复【安卓视频】获取下载链接) ●【新】Ajax知识点视频更新了!(回复【学习...

    Java学习
  • PyCharm自动添加文件头注释

    位置:File->settings->Editor->File and Code Templates->Python Script

    白墨石
  • (59) 文件和目录操作 / 计算机程序的思维逻辑

    前面两节我们介绍了如何通过流的方式读写文件内容,本节我们介绍文件元数据和目录的一些操作。 文件和目录操作最终是与操作系统和文件系统相关的,不同系统的实现是不一样...

    swiftma
  • Java File类基础解析 1

    public File(String pathname) :通过给定的路径名字符转换为抽象路径名来创建新的File实例

    一只胡说八道的猴子
  • 知识点——初识java中File类

    SUN公司提供给开发者操作文件和文件夹的一个类对象。 Java中万物皆对象,计算机中万物皆文件

    用户7073689

扫码关注云+社区

领取腾讯云代金券