【JAVA学习之路 | 进阶篇】File类及常用方法

简介: 【JAVA学习之路 | 进阶篇】File类及常用方法

1.概述

(1). File类及相关的各种流,都定义在java.io包下.


(2). 一个File对象代表硬盘或网络中的一个文件或文件目录.与平台无关.


(3). File能新建,删除,重命名文件或目录.但不能访问文件本身.如果需要访问文件内容本身,需要使用输入输出流.


(4). 想要在java程序中表示一个真实存在的文件或目录,那么必须要有一个文件对象.但java中的一个文件对象,可能没有一个真实存在的文件或文件目录.

2.构造器

public File(String pathname) : 以pathname为路径创建File对象,可以是相对路径也可以是绝对路径
如果是相对路径,则默认的当前路径在系统属性user.dir中存储
 
public File(String parent, String child) : 以parent为父路径,child为子路径创建File对象
 
public File(File parent, String child) : 根据一个File对象和子文件路径创建File对象

关于路径 :

  • 绝对路径 : 从盘符开始的路径,是一条完整的路径.
  • 相对于项目目录的路径.这是一条便捷的路径.在IDEA中,main方法中文件的相对路径是相对于"当前工程Progect".而在单元测试中,其中文件的相对路径是相对于"当前模块Module".

2.常见方法

(1). 获取文件和目录的基本信息

例 :

@Test
    public void Test1() {
        File file = new File("C:\\Users\\hexua\\.vscode\\cli");//双斜杆避免转义
        //public String getName() : 获取名称
        System.out.println(file.getName());
        //public String getPath() : 获取路径
        System.out.println(file.getPath());
        //public String getAbsolutePath() : 获取绝对路径
        System.out.println(file.getAbsolutePath());
        //public String getAbsoluteFile() : 获取绝对路径表示的文件
        System.out.println(file.getAbsoluteFile());
        //public String getParent : 获取上层文件目录的路径,若无,则返回null
        System.out.println(file.getParent());
        //public long length() : 获取文件长度,如果是目录,则获取目录下的所有文件的长度
        System.out.println(file.length());
        //public long lastModified() : 获取最后一次的修改时间的时间戳,单位应该是ms
        System.out.println(file.lastModified());
    }
 
控制台
cli
C:\Users\hexua\.vscode\cli
C:\Users\hexua\.vscode\cli
C:\Users\hexua\.vscode\cli
C:\Users\hexua\.vscode
8192
1702823509151

如果File对象代表的文件或目录存在,则File对象实例初始化时,就会用硬盘中对应的文件或文件目录的信息为File对象赋值.否则除了路径和名称外,其他属性都是默认值.

(2). File类的重命名功能

@Test
    public void test8() {
        //public boolean ranameTo() : 把文件重命名为指定的文件路径
        //file1.renameTo(file2) ---> 要想返回true,file1必须存在,file2必须不存在,但file2所在的文件目录必须存在
    }

(3). 判断功能的方法

例 :

@Test
    public void Test2() {
        File file = new File("C:\\Users\\hexua\\Cloud");//双斜杆避免转义
        //public boolean exits() : 此File表示的文件或目录是否实际存在
        System.out.println(file.exists());
        //public boolean isDirectory() : 此File表示的是否是目录
        System.out.println(file.isDirectory());
        //public boolean isFile() : 此File表示的是否是文件
        System.out.println(file.isFile());
        //public boolean canRead() : 判断是否可读
        System.out.println(file.canRead());
        //public boolean canWrite() : 判断是否可写
        System.out.println(file.canWrite());
        //public boolean isHidden() : 判断是否隐藏
        System.out.println(file.isHidden());
    }
 
控制台
true
true
false
true
true
false

(4). 创建,删除功能.

@Test
    public void test7() {
        File file = new File("src/xixihaha.txt");
        try {
            //public boolean createNewFile() : 创建文件。若文件存在,返回false
            System.out.println(file.createNewFile());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //public boolean mkdir : 创建文件目录。如果此文件目录存在,就不创建了.如果此文件目录的上层
        //目录也不存在,那么也不创建
        //public boolean mkdirs : 创建文件目录。如果此文件目录的上层不村子,也创建
        //假设codes与ideas都不存在,mkdirs方法可以创建,mkdir则不可以
        File file1 = new File("D:\\codes\\.ideas");
        
        //public boolean delect() : 删除文件或文件夹
        file.delete();
    }

至于怎么区分文件与文件夹.很简单.文件一般带后缀,如".java", ".cpp", ".jpg",而文件夹不带.

目录
打赏
0
2
2
0
7
分享
相关文章
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
66 6
Java 面试资料中相关代码使用方法与组件封装方法解析
Java 编程进阶实操中工具集整合组件封装方法与使用指南详解
本文详细介绍Hutool工具集和图书管理系统相关组件的封装方法及使用示例。通过通用工具类封装(如日期格式化、字符串处理、加密等)、数据库操作封装(结合Hutool DbUtil与MyBatis)、前端Vue组件封装(图书列表与借阅表单)以及后端服务层封装(业务逻辑实现与REST API设计),帮助开发者提升代码复用性与可维护性。同时,提供最佳实践建议,如单一职责原则、高内聚低耦合、参数配置化等,助力高效开发。适用于Java编程进阶学习与实际项目应用。
109 10
Java并发包下Atomic相关类的使用
本文介绍了 `java.util.concurrent.atomic` 包下的各类原子类及其使用场景,包括基本类型原子类(如 `AtomicInteger`、`AtomicLong`)、数组类型原子类(如 `AtomicIntegerArray`)、引用类型原子类(如 `AtomicReference`)、对象属性修改原子类(如 `AtomicIntegerFieldUpdater`)以及原子操作增强类(如 `LongAdder` 和 `LongAccumulator`)。同时,详细对比了不同原子类在高并发场景下的性能表现,展示了 `LongAdder` 的高效性。
92 31
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
349 20
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
72 9
|
2月前
|
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
44 0
|
2月前
|
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
198 0
24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
137 1
AI助理

你好,我是AI助理

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

登录插画

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

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