IO流里面的字节流

一、什么是字节流?

       字节流通俗的说就是通过以二进制数字的形式,对任意文件数据进行一个字节一个字节的传输过程我们就称为字节流。

二、字节流分类

      字节流是程序中最常用的流,根据数据的传输方向可将其分为字节输入流和字节输出流。在JDK中, 提供了两个抽象类InputStream和OutputStream,它们是字节流的顶级父类,所有的字节输入流都继 承自InputStream,所有的字节输出流都继承自OutputStream。

三、FileInputStream、FileOutputStream常用方法

InputStream输入流( 实现磁盘文件数据到程序,读文件 )

InputStream是以字节为单位的输出流,它是所有以字节输入流类的公共父类,是表示字节输入流 的所有类的超类。

方法说明
int read()读取一个字节,返回int表示,如果文件没有数据则返回-1
int len = read(buf)读取一组数据字节,并返回成功读取字节的个数。len保存字节 个数
bytes[] readAllBytes()一次全部读取所有文字的字节
int read(buf,2,3)读取3个字节,赋值到数组2位置开始
void close()关闭流
transferTo(OutputStream out)此方法是java9 新方法,直接实现复制文件
int skip(long)跳过并从输入流中丢弃 n 字节的数据

OutputStream输出流( 实现程序数据到磁盘文件,写文件 )

OutputStream是以字节为单位的输出流的超类,提供了write()函数从输出流中读取字节数据。

方法说明
void write(byte[] b)输出流写入字节数组
void write(int b)输出流写入97(a) 一个字符
void write(byte[] b,int off,int len)输出流写入指定数组数据字节
void flush()写入数据
void close()关闭流
FileOutputStream("user.txt")构造方法
FileOutputStream("user.txt",true)构造方法,采用追加模式

四、为什么输入流是读数据,而输出流是写数据?

       因为输入输出都是相对于内存来说的。input是将数据从磁盘读取到内存当中,而输出就是将数据从内存输出道磁盘。
       我们程序在运行地时候也会从磁盘中被调入内存中,程序和其运行时数据都是会在内存中驻留,然后在真正执行的时候,cpu会从中读取到相应的数据指令,执行相应的指令。

五、缓冲字节流

       BufferedInputStream 顾名思义就是它有一个内部的buffer(缓存),它的read方法表面上 看,虽然是只读了一个字节,但它是开始时猛然从硬盘读入一大堆字节到自己的缓 存,当你read 时,它是从缓存读进一个字节到内存。而前面讲的FileInputStream字节流,read时,都是真正每 个字节都从硬盘到内存,导致很慢。同理,BufferedOutputStream缓冲输出流是一样的。

构造方法

BufferedInputStream bis = new BufferedInputStream(InputStream is)

六、Object字节流

对象流是一对高级流,在流链接中的作用是完成对象的序列化与反序列化:

1.序列化:把Java对象转换为字节序列的过程。

2.反序列化:把字节序列恢复为Java对象的过程。

对象的序列化主要有两种用途:

1.把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)

2.在网络上传送对象的字节序列。(网络传输对象)

java.io.ObjectInputStream

常用构造器

ObjectInputStream(InputStream in):创建一个对象输入流并连接到参数in这个输入流上 常用方法 Object readObject():进行对象反序列化,将读取的字节转化为一个对象并以Object形式返回(多 态),如果读取的字节表示的不是一个java对象,会抛出java.io.ClassNotFoundException

java.io.ObjectOutputStream

常用构造器

ObjectOutputStream(OutputStream out):创建一个对象输出流并连接到参数out这个输入流上 常用方法 void writeObjecat(Object obj):进行对象序列化

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值