一、I/O原理
- 文件是数据源,在程序中以流(Stream)的形式存在。
- I/O是Input和Output的缩写,I/O技术是非常实用的技术,用于处理数据传输(如:读/写文件,网络通信)。
- Java程序中,对于数据的输入/输出操作是以流(stream)的方式进行的。
- java.io 包是 Java 标准库中的一个核心包,提供了用于系统输入和输出的类,它包含了处理数据流(字节流和字符流)、文件读写、序列化以及数据格式化的工具。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
二、I/O流的分类
- 按操作数据单位分为:字节流(二进制文件)、字符流(文本文件)
- 按数据的流向分为:输入流、输出流
- 按流的角色分为:节点流、处理流
三、流的分类
下图是一个描述输入流和输出流的类层次图
四、字节流
1. 字节流写数据
使用字节输出流写数据的示例:
2. 字节流读数据
使用字节输入流读取数据的示例:
一次读一个字节字符数据
一次读一个字节数组数据
五、字符流
1. 字符流写数据
字符流写数据的5种方式
刷新和关闭的方法
2. 字符流读数据
字符流读数据的两种方式
六、解决乱码问题——字节与字符的转化
数据持久化或网络传输都是以字节进行的,所以必须要有字符到字节或字节到字符的转化。
1. 字符流中的编码解码问题
- InputStreamReader 类是字节到字符的转化桥梁,InputStream 到 Reader 的过程要指定编码字符集,否则将采用操作系统默认字符集,很可能会出现乱码问题。StreamDecoder 正是完成字节到字符的解码的实现类。
- OutputStreamWriter 是从字符流到字节流的桥梁,使用指定的编码将写入的字符编码为字节,由StreamEncoder完成编码过程。
2. 字符串中的编码解码问题
- 编码:byte[] getBytes(String charsetName)使用指定的字符集将该 String编码为一系列字节,无指定则使用平台的默认字符集。
- 解码:String(byte[] bytes, String charsetName)通过指定的字符集解码指定的字节数组来创建字符串,无指定则使用平台的默认字符集。
七、字符缓冲流
1. BufferedWriter
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途。
方法void newLine() 写一行行分隔符。 行分隔符字符串由系统属性line.separator定义,并不一定是单个换行符(‘ n’)字符。
2. BufferedReader
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。
方法String readLine() 读一行文字。 结果包含行的内容的字符串,不包括任何行终止字符如果流的结尾。
八、文件目录
1.创建目录
- mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
- mkdirs()方法创建一个文件夹和它的所有父文件夹。
2.读取目录
一个目录其实就是一个 File 对象,它包含其他文件和文件夹。
如果创建一个 File 对象并且它是一个目录,那么调用 isDirectory() 方法会返回 true。
可以通过调用该对象上的 list() 方法,来提取它包含的文件和文件夹的列表。
3.删除目录或文件
删除文件可以使用 java.io.File.delete() 方法。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/3936.html