IO流
文本文件的读操作(FileReader)
/**
*
* 一:流的分类:
* 1.操作数据单位:字节流、字符流
* 2.数据的流向:输入流、输出流
* 3.流的角色:节点流、处理流
*
* 二、流的体系结构
* 抽象基类 节点流(或文件流) 缓冲流(处理流的一种)
* InputStream FileInputStream (read(byte[] buffer)) BufferInputStream (read(byte[] buffer))
* OutputStream FileOutputStream (write(byte[] buffer,0,len)) BufferOutputStream (write(byte[] buffer,0,len) / flush())
* Reader FileReader (read(char[] buffer)) BufferReader (read(char[] buffer) / readLine())
* Writer FileWriter (write(char[] buffer,0,len)) BufferWriter (write(char[] buffer,0,len) / flush())
*
* @author ccchai
* @create 2022-03-03 10:56
*/
public class FileReaderWriterTest {
/*
将项目下的hello.txt文件内容读入到程序中,并输入到控制台
说明点:
1.read()的理解:返回读入的一个字符。如果达到文件末尾,返回-1
2.异常的处理:为了保证流资源一定可以执行关闭操作。需要使用try-catch-finally处理
3.读入的文件一定要存在,否则就会报FileNotFoundException
*/
//对read()操作升级,使用read的重载方法
文本文件的写操作(FileWriter)
/*
1.输出操作,对应的File可以是不存在的,并不会报异常
2. File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件
File对应的硬盘中的文件如果存在:
如果流使用的构造器是:FileWriter(file,false) / FileWriter(file,true):对原有的文件进行覆盖
如果流使用的构造器是:FileWriter(file,true): 不会对原有文件覆盖,而是在原文件的基础上追加
*/
文本文件的拷贝操作(FileReader+FileWriter)
非文本文件的拷贝操作(FileInputStream+FileOutputStream)
//使用FileInputStream和FileOutputStream对非文本文件进行复制
非文本文件的拷贝操作(BufferedInputStream+BUfferedOutputStream)
/**
* 处理流之一:缓冲流的使用
*
* 1.缓冲流:
* BufferInputStream
* BufferOutputStream
* BufferReader
* BufferWriter
*
* 2.作用:提高流的读取、写入的速度
* 提高读写速度的原因:内部提供了一个缓冲区
*
* @author ccchai
* @create 2022-03-04 14:56
*/
public class BufferedTest {
/*
实现非文本文件的复制
*/
转换流(InputStreamReader+OutputStreamWriter)
/**
* 处理流之二:转换流的使用
* 1.转换流:属于字符流
* InputStreamReader:将一个字节的输入流转换为字符的输入流
* OutputStreamWriter:将一个字符的输出流转换为字节的输出流
*
* 2.作用:提供字节流和字符流之间的转换
*
*
* @author ccchai
* @create 2022-03-04 16:31
*/
public class InputStreamReaderTest {
/*
InputStreamReader的使用,实现字节的输入流到字符的输入流
*/
对象流(重点是序列化和反序列化)
/**
* 对象流的使用
* 1.ObjectInputStream 和 ObjectOutPutStream
* 2.作用:用于存储和读取基本数据类型或对象的处理流。它的强大之处就是可以把java中的对象写入到数据源中,也能把对象从数据源中还原出来。
*
* 3.要想一个java对象是可序列化的,需要满足相应的要求。见Person.java
*
* 4.序列化机制:
* 对象序列化机制允许把内存中的java对象转换成与平台无关的二进制流,从而允许把这种
* 二进制流持久的保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。
* 当其他程序获取了这种二进制流,就可以恢复成原来的java对象
*
* @author ccchai
* @create 2022-03-04 20:07
*/
public class ObjectInputOutputStreamTest {
/*
序列化过程:将内存中的java对象保存到磁盘中或通过网络传输出去
使用ObjectOutputStream实现
*/