java IO 所有知识点的总结!

 Java  IO流的分类

1 按流向划分:输入流和输出流

2 按处理单元划分:字节流和字符流

3 按流的角色划分:节点流和处理流

输入流

主要由inputStream和Reader作为基类

只能读取数,不能写入数据的流,实现程序从数据源中读取流

输出流

主要由OutputStream和Write作为基类

只能写入流,不能从中读取数据,实现程序向目标数据源中写数据

void write(String str)将str字符串中包含的字符输出到输出流中
void write(String str,int off,int len)将字符串中从off位置开始,长度为len的字符输出到输出流中
void colse()关闭输出流
void flush()刷新输出流

缓冲流

Java缓冲流自身并不具有IO功能,只是在别的流上增加缓冲,以提高程序性能分类

字节缓冲流

字符缓冲流:

1.BufferedWrite类

是Writer类的子类,带有缓冲区

默认情况下,只有缓冲区满的时候,才会把缓冲区的数据真正写到目的地,能减少物理写数据的次数,提高输入/输出操作的执行效率

常用构造方法

BufferedWrite(Writer out)创建一个缓冲字符输出流
2.BufferedReader类

Reader类的子类

带有缓冲区,提高文件读取的效率

把一批数据读到缓冲区

从缓冲区内获取数据

常用构造方法

BufferedReader(Reader in )创建一个缓冲字符输入流
数据操作流

对二进制文件读写操作

分类

  • DataOutputStream类

    • OutputStream类的子类

    • 与FileOutputStream类结合使用写二进制文件

  • DataInputStream类

    • InputStream类的子类

    • 与FileInputStream类结合使用读取二进制文件

节点流

可以直接向一个特定的存储介质(如磁盘、文件)读写数据的流

使用节点流进行读写数据操作时,程序直接连接到数据源、

处理流

对已存在的流进行连接和封装,通过封装后的流实现数据读写操作的流

使用处理流进行读写操作时,程序并不会直接连接到实际的数据源

使用处理流包装节点流,通过处理流执行输入和输出功能,让节点流与文件或磁盘等存储设置交互,可隐藏底层节点流的差异

字节流

以8位字节位操作数据单元的流,可操作文本数据

可细分位字符输入流、字符输出流

字符流

以16位字符位操作数据单元的流,可操作文本数据

可细分为字符输入流、字符输出流


字符流字节流区别

操作的数据单元不同


输入流主要由InputStream和Reader作为基类

输出流则主要由OutputStream和Writer作为基类

都是抽象类,无法直接实例化对象

字节输出流的基类:OutputStream

void close()关闭输出流
void flush()刷新缓冲区
void write(byte[]b)将每个byte数据写入数据流
void write(byte[] b,int off,int len)将每个指定范围的byte数据写入数据流
void write(int b)将一个字节数据写入数据流

字符输出流基类:Reader

int  read()从输入流中读取单个字符,返回所读取的字符数据
int  read(char[] c)从输入流中最多读取c.length个字符数据,并将其存储在字符数组c中,返回实际读取的字符数
int read(char[] c,int off,int len)从输入流中最多读取len个字符的数据,并将其存储在字符数组c中时,并不是从数组起点开始,返回实际读取的字符数

字节输出流FileOutputStream类

FileOutputStream(File  file)创建向指定File对象写数据的文件输出流  file:  指定目标文件的对象
FileOutputStream(String name)创建向指定路径的文件写数据的文件输出流name: 指定目标文件的路径字符串
FileOutputStream(String name,boolean append)

创建一个向指定路径的文件写入数据的文件输出流

name:指定目标文件的路径字符串append:表示是否在文件末尾追加数据。如果为true,则表示可以在文件末尾追加数据

字节输入流的基类:InputStream

int read()读取一个字节数据
int read(byte[] b)将数据读取到字节数组中
int read(byte[] b,int off,int len)从输入流中读取最多len长度的字节,保存到字节数组中,保存的位置从off开始
void close()关闭输入流
int available()返回输入流读取的字节数

序列化与反序列化

方便数据传输和存储

序列化是将对象的状态存储带特定的存储介质中的过程

反序列化时将特定的存储介质中数据重新构建对象的过程

对象输出流(ObjectOutputStream):实现序列化

对象输入流(ObjectInputStream):实现反序列化

一个类实现java.io.Serializable接口,该类的对象事可序列化的

public interface Serializble{} 一个标识接口

ObjectOutputStream(ObjectStream out)创建对象输出流对象构造方法
final void writeObject(Object obj)将指定对象写入流实例方法

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值