Java_File类及其常用方法

简介: Java_File类及其常用方法

File类及其常用方法


         在Java中会有很多地方需要进行文件操作方,File类是Java处理文件的一个类,有不少操作都是基于这个类的,该类直接继承自Object类,文件和目录路径名的抽象表现形式;该类的实例是不可变的,一旦创建由File对象表示的抽象路径名永远不会改变;
File类翻译的是文件用于表达java中的路径名,代表物理盘符中的一个文件或者文件夹

1. File类的构造方法

  • File(String pathname):通过将给定路径的名字转换为抽象路径名来创建新的File实例
  • File(String parent, String child):创建从父路径名的字符串和一个孩子的一个新的File实例文件;参数1:指定的目录名称 参数2:子路径
  • File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的File实例
public static void main(String[] args) {
   
        //File(String pathname)  (推荐这种方式表示一个文件或者目录的抽象表现形式!)
        File file1 = new File("d:\\123\\123.txt");
        //File(String parent, String child):参数1:指定的目录名称 参数2:子路径
        File file2 = new File("d:\\123","123.txt");
        //File(File parent, String child) 
        File file3 = new File("d:\\demo");
        File file4 = new File(file3,"123.txt");
    }

2. 创建功能

  • public boolean createNewFile() IOException:表示创建文件,如果文件已经存在了不会创建,true:表示创建成功;
  • public boolean mkdir():创建目录(文件夹),如果文件夹(目录)已经存在了,不会创建,mkdir()只会建立一级的文件夹
  • public boolean mkdirs():创建目录(文件夹),如果不存在目录(文件夹),就会创建,mkdirs()可以建立多级文件夹
public static void main(String[] args) throws IOException {
   
        //创建File对象:描述当前路径
        File file = new File("d:\\kaka.txt");
        System.out.println("createNewFile():" + file.createNewFile());

          //创建目录(文件夹),只会建立一级的文件夹
        File file2 = new File("d:\\test_01") ;
        System.out.println("mkdir():"+file2.mkdir());

         //表示创建文件,如果文件已经存在了,不会创建
        File file3 = new File("d:\\test_01\\bb.txt") ;
        System.out.println(file3.createNewFile());

        //创建一个文件没有带盘符在当前项目路径下
        File file4 = new File("a.txt") ;
        System.out.println(file4.createNewFile());

        //mkdirs():可以建立多级文件夹
        File file5 = new File("aa\\bb\\cc") ;
        System.out.println(file5.mkdirs());
    }

注:

  • 在某个文件夹(目录)下创建文件的话,前提是存在这个文件夹

  • 最终创建出来的是一个文件还是文件夹,不取决于路径名称取决于调用的什么方法去创建;

3. 删除功能

  • public boolean delete():删除由此抽象路径名表示的文件或目录
public static void main(String[] args) {
   
        //删除d:\\kaka.txt这个文件
        File file = new File("d:\\kaka.txt");
        System.out.println("delete:" + file.delete());

        //要删除aa\bb\cc目录
        //File file2 = new File("aa\\bb\\cc");cc这个目录不为空,没有办法直接删除
        File file2 = new File("aa\\bb\\cc\\aa.txt");
        System.out.println(file2.delete());//删除aa.txt
        File file3 = new File("aa\\bb");//cc的父路径
        File file4 = new File(file3,"cc");//代表cc
        System.out.println(file4.delete());
}

注:

  • 如果此路径名表示目录,则目录必须为空才能删除
  • 既可以删除文件,也可以删除文件夹
  • 删除时直接删除,没有经过回收站

4. 重命名功能

  • public boolean renameTo(File dest):重命名文件
public static void main(String[] args) {
   

    //第一种情况:重命名
    File fileStr1 = new File("d:\\kaka.txt") ;
    File fileStr2 = new File("d:\\卡卡.txt");
    System.out.println("renameTo():"+fileStr1.renameTo(fileStr2)) ;

    //第二种情况:重命名并且剪切
    File fileStr3 = new File("d:\\kaka.txt") ;
    File fileStr4 = new File("卡卡.txt") ;

    System.out.println("renameTo()"+fileStr3.renameTo(fileStr4));
}

注:

  • 目标File对象描述的文件路径和当前原文件路径一致:重命名
  • 目标File对象描述的文件路径和当前原文件路径不一致:重命名且剪切

5. 判断功能

  • public boolean isDirectory() :判断当前File对象描述路径形式是否是一个文件夹
  • public boolean isFile():判断是否是文件
  • public boolean exists():判断是否存在
  • public boolean canRead():判断是否可读
  • public boolean canWrite():判断是否可写
  • public boolean isHidden():判断是否隐藏
public static void main(String[] args) {
   
    //创建File对象
    File file = new File("a.txt");
    System.out.println(file.isDirectory());//false
    System.out.println(file.isFile());//true
    System.out.println(file.exists());//true
    System.out.println(file.canRead());//true
    System.out.println(file.canWrite());//true
    System.out.println(file.isHidden());//false
}

6. 获取功能

6.1 获取路径

  • public String getAbsolutePath():绝对路径
  • public String getPath():相对路径(当前项目的路径)
  • public String getName():获取文件或目录的名称,如果路径名的名字序列为空,则返回空字符串
public static void main(String[] args) {
   
        //创建File对象
        File file = new File("a.txt");
        //D:\JavaOffline\Willing\work_space\JavaSE_2020_6_23\a.txt
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getPath());//a.txt
        System.out.println(file.getName());//a.txt
    }

6.2 获取文件的内容

  • public long length():获取当前文件内容的长度
public static void main(String[] args) {
   
    //创建File对象
    File file = new File("a.txt");
    System.out.println(file.length());//4
}

注:

  • 只可以对文件使用,不可对文件夹进行操作

6.3 获取最后一次修改的时间

  • public long lastModified():最后一次修改文件的文件的时间毫秒值
public static void main(String[] args) {
   
    //创建File对象
    File file = new File("a.txt");
    System.out.println(file.lastModified());//1592918354720

    //long-- Date-->String类型日期文本  (格式化)
    //创建日期格式对象
    long time = 1592918354720L;
    Date date = new Date(time);
    //Date----->String日期文本格式 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateStr = sdf.format(date);
    System.out.println(dateStr);//2020-06-23 21:19:14
}

6.4 获取文件夹中内容的方法

  • public File[] listFiles(): 以File对象的形式返回当前路径下的所有文件和文件夹名称
  • public String[] list() : 以字符串的形式返回当前路径下所有的文件和文件夹的名称
public static void main(String[] args) {
   
    File file = new File("H:\\") ;

    //public File[] listFiles()
    File[] fileArray = file.listFiles() ;
    //防止空指针异常
    if(fileArray !=null) {
   
        //遍历File数组
        for(File f :fileArray) {
    
            //获取所有名称
            System.out.println(f.getName());
        }
    }

    //public String[] list()
    String[] strArray = file.list() ;
    if(strArray !=null) {
   
        for(String s : strArray) {
   
            System.out.println(s);
        }
    }
}

7. 获取以 .txt 为后缀的文件

需求:

  • 获取所有在D盘中的后缀名为.txt结尾的文件的文件名

7.1 方式一

通过public File[] listFiles()遍历File数组实现

public static void main(String[] args) {
   
    //路径封装成File对象
    File file = new File("d:\\");

    File[] fileArray = file.listFiles();
    if(fileArray != null){
   
        //遍历获取每一个字符串对象
        for(File f : fileArray){
   
            //判断是否是文件
            if(f.isFile()){
   
                //是否以.jpg结尾
                if(f.getName().endsWith(".txt")){
   
                    System.out.println(f.getName());
                }
            }
        }
    }
}

7.2 方式二

通过文件名称过滤器FilenameFilter:接口实现

  • public String[] list(FilenameFilter filter) :获取指定目录下的所有的文件以及文件夹的列表
  • public File[] listFiles(FilenameFilter filter) :使用文件名称过滤器将所有目录以及文件存储到File数组中
  • boolean accept(File dir, String name):是否将指定File对象下的文件添加到列表中,如果是true则添加到列表中
public static void main(String[] args){
       
    File file = new File("d:\\") ;    

    //获取的时候,就已经得到列表
    String[] strArray = file.list(new FilenameFilter(){
   
       //参数1:File对象  参数2:文件名称
       public boolean accept(File dir, String name){
    
           File file = new File(dir,name);
           //判断file是否是文件
           boolean flag1 = file.isFile();
           boolean flag2 = name.endsWith(".txt");
           return flag1 && flag2;
        }
    }) ; 

    for(String s : strArray){
   
        System.out.println(s);
    }
}
  • 一步完成:return new File(dir,name).isFile() && name.endsWith(".txt") ;
目录
相关文章
|
4月前
|
Java 开发者
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
133 0
|
3月前
|
Java 开发者
Java 中的 toString() 方法详解:为什么它如此重要?
在Java开发中,`toString()`方法至关重要,用于返回对象的字符串表示。默认实现仅输出类名和哈希码,信息有限且不直观。通过重写`toString()`,可展示对象字段值,提升调试效率与代码可读性。借助Lombok的`@Data`注解,能自动生成标准化的`toString()`方法,简化开发流程,尤其适合字段较多的场景。合理运用`toString()`,可显著提高开发效率与代码质量。
159 0
|
1月前
|
人工智能 前端开发 Java
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
58 6
Java 面试资料中相关代码使用方法与组件封装方法解析
|
2月前
|
JavaScript 前端开发 Java
Java 编程进阶实操中工具集整合组件封装方法与使用指南详解
本文详细介绍Hutool工具集和图书管理系统相关组件的封装方法及使用示例。通过通用工具类封装(如日期格式化、字符串处理、加密等)、数据库操作封装(结合Hutool DbUtil与MyBatis)、前端Vue组件封装(图书列表与借阅表单)以及后端服务层封装(业务逻辑实现与REST API设计),帮助开发者提升代码复用性与可维护性。同时,提供最佳实践建议,如单一职责原则、高内聚低耦合、参数配置化等,助力高效开发。适用于Java编程进阶学习与实际项目应用。
103 10
|
2月前
|
人工智能 安全 Java
Java并发包下Atomic相关类的使用
本文介绍了 `java.util.concurrent.atomic` 包下的各类原子类及其使用场景,包括基本类型原子类(如 `AtomicInteger`、`AtomicLong`)、数组类型原子类(如 `AtomicIntegerArray`)、引用类型原子类(如 `AtomicReference`)、对象属性修改原子类(如 `AtomicIntegerFieldUpdater`)以及原子操作增强类(如 `LongAdder` 和 `LongAccumulator`)。同时,详细对比了不同原子类在高并发场景下的性能表现,展示了 `LongAdder` 的高效性。
91 31
|
2月前
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
300 20
|
2月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
67 9
|
2月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
42 0
|
2月前
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
191 0
|
3月前
|
Java 数据安全/隐私保护
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问