Java SE环境下的文件输入输出探究

10小时前发布 gsjqwyl
1 0 0

Java SE中文件输入输出的深入剖析

文章目录

    • 📕1. File类的运用
        • ✏️1.1 构造方法
      • ✏️1.2 常用功能
    • 📕2. I/O流概览
        • ✏️2.1 I/O流的类别划分
      • ✏️2.2 I/O体系架构
    • 📕3. 字节流详解
        • ✏️3.1 InputStream类解析
      • ✏️3.2 OutputStream类解读
    • 📕4. 字符流剖析
        • ✏️4.1 Reader类探究
      • ✏️4.2 Writer类分析

❗❗❗ 编者特别声明 : 本文分享的是博主日常开发中常用的I/O流相关类与方法,并非涵盖全部I/O流知识

📕1. File类的运用

此处主要阐述对文件的增删改查操作,并非针对文件内内容的操作

✏️1.1 构造方法
方法 说明
File(File parent, String child) 根据父目录与子文件路径,构建新的 File 实例
File(String pathname) 按照文件路径创建新的 File 实例,路径可为绝对或相对
File(String parent, String child) 凭借父目录路径与子文件路径,创建新的 File 实例
✏️1.2 常用功能
方法 说明
getParent() 回传 File 对象的父目录文件路径
getName() 回传 File 对象的纯文件名称
getPath() 回传 File 对象的文件路径
getAbsolutePath() 回传 File 对象的绝对路径
getCanonicalPath() 回传 File 对象经修饰的绝对路径
exists() 判断 File 对象描述的文件是否真实存在
isDirectory() 判断 File 对象代表的文件是否为目录
isFile() 判断 File 对象代表的文件是否为普通文件
createNewFile() 依据 File 对象,自动创建空文件,成功则返回 true
delete() 依据 File 对象,删除该文件,成功则返回 true
deleteOnExit() 依据 File 对象,标记文件待删除,删除动作于 JVM 运行结束时执行
list() 回传 File 对象代表目录下的所有文件名
listFiles() 回传 File 对象代表目录下的所有文件,以 File 对象形式呈现
mkdir() 创建 File 对象代表的目录
mkdirs() 创建 File 对象代表的目录,必要时创建中间目录
renameTo(File dest) 进行文件改名,可视为剪切、粘贴操作
canRead() 判断用户是否对文件有可读权限
canWrite() 判断用户是否对文件有可写权限

📕2. I/O流概览

I/O即Input/Output的缩写。I/O技术是十分实用的技术,用于处理数据传输,像文件的读/写、网络通讯等场景都会用到。
在Java程序里,数据的输入/输出操作以“流(stream)”的形式开展。
java.io包中提供了各类“流”类与接口,用以获取不同种类的数据,并通过方法实现数据的输入或输出

✏️2.1 I/O流的类别划分
  1. 按操作数据单位不同分为:字节流(8 bit)、字符流(16 bit)
  2. 按数据流的流向不同分为:输入流、输出流
  3. 按流的角色不同分为:节点流、处理流
抽象基类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
✏️2.2 I/O体系架构

Java的io流涉及40多个类,实则规律明显,均由上述4个抽象基类派生而来

在这里插入图片描述

📕3. 字节流详解

✏️3.1 InputStream类解析

InputStream是抽象类,我们当下只关注从文件读取,所以用FileInputStream类实例化对象

  1. FileInputStream类的构造方法
方法 说明
FileInputStream(File file) 通过指定的File对象创建输入流
FileInputStream(String pathname) 通过指定文件的路径字符串创建输入流
  1. FileInputStream类的常见功能
方法 说明
int read() 从输入流中读取一个字节的数据
int read(byte[] b) 从输入流中读取一定数量的字节到字节数组中,返回长度
int read(byte[] b, int off, int len) 最多读取 len – off 字节的数据到 b中,从 off 开始,返回实际读到的数量;-1表示已读完
void close() 关闭字节流
✏️3.2 OutputStream类解读

OutputStream同样是抽象类,要使用需具体实现类。我们目前仍只关心写入文件,所以用FileOutputStream类实例化对象

  1. FileOutputStream的构造方法
方法 说明
FileOutputStream(File file) 通过指定的File对象创建输出流
FilenOutputStream(String name) 通过指定文件的路径字符串创建输出流
  1. FileOutputStream的常用功能
方法 说明
write(int b) 写入一个字节到文件
write(byte[] b) 将一个字节数组写入文件
write(byte[] b, int off, int len) 从字节数组的指定位置开始,写入指定长度的字节到文件
close() 关闭输出流,释放相关资源

📕4. 字符流剖析

✏️4.1 Reader类探究

FileReader类主要用于从文件读取字符数据,是字符输入流,继承自InputStreamReader(转换流),抽象基类为Reader。可通过构造方法传入文件路径创建

  1. FileReader的构造方法
方法 说明
FileReader(File file) 创建与指定文件对象相关联的FileReader
FileReader(String fileName) 创建与指定文件路径名相关联的FileReader
  1. FileReader的常用功能
方法 说明
int read() 从输入流中读取一个字符,返回该字符的整数表示(到达文件末尾返回 -1)
int read(char[] cbuf) 将字符读入数组,返回读取的长度
void close() 关闭该流并释放与之关联的所有资源
✏️4.2 Writer类分析

FileWriter类用于将字符数据写入文件

  1. FileWriter的常用功能
方法 说明
write(int c) 写入单个字符到文件中
write(char[] cbuf) 将字符数组写入文件中
write(String str) 写入字符串到文件中
write(String str, int off, int len) 写入字符串的一部分到文件中
flush() 刷新缓冲区,将数据写入文件
close() 关闭文件并释放相关资源
© 版权声明

相关文章

暂无评论

暂无评论...