【Java I/O 流】文件的操作——java.io.File 类详解

简介: 最近遇到了一些文件流读写的问题,发现对这块知识掌握的还不够系统,所以花了一些时间将 Java IO 流相关的知识整理了一下,也在这里分享给你们,希望能够有所帮助。先来看第一篇:本文讲述了计算机文件的基本知识,以及 Java 中如何使用 File 类来操作文件的。

在这里插入图片描述

❤️ 个人主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:Java 教程:从入门到精通

大家好,我是水滴~~

最近遇到了一些文件流读写的问题,发现对这块知识掌握的还不够系统,所以花了一些时间将 Java IO 流相关的知识整理了一下,也在这里分享给你们,希望能够有所帮助。

先来看第一篇:本文讲述了计算机文件的基本知识,以及 Java 中如何使用 File 类来操作文件的。

第一章 什么是文件

计算机文件是以计算机硬盘为载体,存储在计算机上的信息集合。文件有很多种类型,例如:文本文件、图片文件、音频文件、视频文件、压缩文件、Word 文件等。

在这里插入图片描述

计算机文件又可分为两大类:文本文件和二进制文件。我们知道,计算机文件的存储在物理上是二进制的,所以文本文件和二进制文件的区别并不是物理上,而是在逻辑上。
文本文件是基于字符编码的文件,常见的编码有 ASCII 编码、UNICODE 编码等。二进制文件是基于值编码的文件,即每个应用有一套自己的编码格式(自定义编码)。

第二章 File 类

Java 中 java.io.File 类是文件和目录路径名的抽象表示,用于操作本地文件或目录。该类有四个构造方法,用于创建 File 的实例。

2.1 构造方法一

通过路径名字符串创建一个新 File 实例。

File(String pathname)

例如:

File file2 = new File("C:/io_demo/file2.txt");

2.2 构造方法二

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

File(File parent, String child);

例如:

File file1 = new File(new File("C:/io_demo"), "file1.txt");

2.3 构造方法三

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

File(String parent, String child)

例如:

File file3 = new File("C:/io_demo", "file3.txt");

2.4 构造方法四

通过 URI 实例来创建一个新的 File 实例。

File(URI uri)

例如:

File file4 = new File(new URI("file:/C:/io_demo/file4.txt"));

第三章 File 类的常用方法

下面列出了 File 类的一些常用方法:

3.1 创建目录

先创建一个指定目录的 File 实例,调用该实例的mkdirsmkdir 方法来创建路径(mkdir 用于创建一级目录;mkdirs 用于创建多级目录,我们一般使用此方法)。

File file = new File("C:/io_demo/path1");
file.mkdirs();

3.2 创建文件

调用 File 实例的 createNewFile 方法来创建一个空文件。如果文件所属目录不存在,会抛出异常,所以应先创建好目录。

File file = new File("C:/io_demo/file5.txt");
try {
   
   
    file.createNewFile();
} catch (IOException e) {
   
   
    e.printStackTrace();
}

3.3 是否存在

调用 File 实例的 exists 方法可以判断该文件或目录是否存在。

File file = new File("C:/io_demo/file5.txt");
System.out.println(file.exists());

3.4 是否为目录

isDirectory 方法判断 File 是否为目录。

File file = new File("C:/io_demo/path1");
System.out.println(file.isDirectory());

3.5 是否为文件

isFile 方法判断 File 是否为文件。

File file = new File("C:/io_demo/file5.txt");
System.out.println(file.isFile());

3.6 获取文件名

getPath 方法获取文件完整路径;getParent 方法获取文件所属目录;getName 方法获取文件名称。

File file = new File("C:/io_demo/file5.txt");
System.out.println(file.getPath());
System.out.println(file.getParent());
System.out.println(file.getName());

3.7 获取最后修改时间

通过 lastModified 方法获取文件的最后修改时间。返回值为时间戳,可以将其转换为时间字符串。

File file = new File("C:/io_demo/file5.txt");
System.out.println(file.lastModified());

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(new Date(file.lastModified())));

3.8 列出目录中所有文件

通过 list 方法列出所有文件和目录字符串名。

File file = new File("C:/io_demo");
for (String s : file.list()) {
   
   
    System.out.println(s);
}

3.9 删除文件或目录

delete 方法用于删除文件或目录。

File file = new File("C:/io_demo/file5.txt");
file.delete();

好了,今天先到这里吧,如果以上内容对你有所帮助,别忘了给我来个关注和三连哦。感谢您的阅读~~

在这里插入图片描述

相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
80 9
|
4天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
48 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
160 57
|
25天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
86 34
|
11天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
55 9
|
9天前
|
存储 Java API
【JavaEE】——文件IO(万字长文)
文件路径,文本文件,二进制文件,File类,文件流,字节流(InputStream,OutputStream)字符流(Reader,Writer)
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
2月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
45 3
|
2月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。