前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】15 File 类

【Java】15 File 类

作者头像
Demo_Null
发布2020-09-28 11:06:04
4780
发布2020-09-28 11:06:04
举报
文章被收录于专栏:Java 学习Java 学习

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());
            }
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 创建 File 类
    • 1.1.1 构造方法
      • 1.1.2 路径
      • 1.2 常用方法
      • 1.3 示例
        • 1.3.1 遍历文件夹
          • 1.3.2 递归创建目录
            • 1.3.3 递归删除
              • 1.3.4 查找文件
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档