JAVAIO流详解

   流的本质是一组有顺序,有起点有终点的数据的集合,是对数据传输的抽象 。JavaIO流根据数据传输特性将流抽象成为各种类,组成了JAVAIO类框架。

  根据传输数据的类型,分为字节流和字符流,根据流向的不同分为输入流和输出流。

  以下是JAVAIO流框架:

 

  InputStream、OutSteam和 Reader 和Writer是两组抽象接口,分别代表了输入字节流、输出字节流和输入字符流和输出字符流。

 字节流和字符流的区别:

      (1) 读写单位不同。字节流读写数据按字节为单位读取,字符流读写数据按字符为单位读取,根据码表映射字符,一次可以多去多个字节。

       (2)读写对象不同。字节流可以读取任意数据包含视频、图片。字符流只能读取文本数据。

        (3)字节流在读取时本身不会使用缓冲区,但字符流是会用到缓冲区的,通过缓冲区来操作文件。

InputStream 是所有输入字节流的父类,ByteArrayInputSream、StringBufferInputStream、FileInputStream分别从内存,硬盘文件等不同数据源实现了对输入流的封装,FilterOutStream及其子类和ObjectInputStream是典型的装饰流,为输入流增加了 读取缓冲区、读取基本数据类型和对象反序列化等功能。OutStream是所有输出字节类的父类,对应的每一个字节输入流都会有一个字节输出流与之对应。

PipedInputStream 和PipedOutStream用于线程间的管道通信。管道输入流PipedInputStream 和 管道输出流 PipedOutputStream 互相关联。可以通过构造连接也可以通过共有的connect()方法连接。支持同一个进程下两个线程间的通信,传递的是字节数据。

PubshBackInputstream 运行用户将读取到的数据重新回退到缓存区中再次读取,其构造函数可以限定缓冲器的大小,即最大可以回退的数据长度

Reader是所有输入字符流的父类,BufferedReader,StringReader和FileReader分别从内存,硬盘文件等不同数据源实现了对输入流的封装,FilterReader及其子类是典型的装饰流,为输入流增加回退的功能。同样每一个输入字符流都有一个输出字符流与之对应,PipedReader/PipedWriter用于线程间的通信。不同的,InputStreanReader和OutStreamWriter用于将字节流转换为字符流。

常见的流的使用:

FileReader / FileWriter 用于文件的读写

RandomAccessFile 随机文件访问类,可以一定程度上随机读取写入文件数据,以字节的方式

BufferedInputstream/BufferedOutputStream BufferedReader/BufferedWriter 内置缓存,可以一次性读取写入多个数据,提高读取写入效率

sequenceInputstream 合并流 允许将多个输入流合并被一个输入流,合并后的流将从第一个流开始输入,直达最后一个合并的流结束输入。

PrintWriter 打印流,用于输出文本信息到控制台或文件

可使用System.setIn () System.setOut() System,setErr()替换系统标准输入输出为其他的流

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值