博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础——IO
阅读量:6195 次
发布时间:2019-06-21

本文共 1805 字,大约阅读时间需要 6 分钟。

hot3.png

java类库创建了大量的io类来满足各种io端相互通信的需求。io是以流的输入输出为基础的,屏蔽了各种设备的实现细节。

一、InputStream

InputStream为输入流的基类,它的子类表示了不同数据源的输入流。

  1. 数据源为字节数组ByteArrayInputStream.可以作为内存缓冲区,从里面读取字节。
  2. 数据源为String对象的StringBufferInputStream,将字符串转换成输入流。
  3. 数据源为文件的FIleInputStream.
  4. "管道"PipedInputStream作为多线程的数据源,一端输入,另一端输出。
  5. SequenceInputStream将多个输入流合并成一个流。
  6. 其他数据源,如internet.

在使用InputStream时很少使用单一的流对象,而是使用装饰器输入流FilterInputStream组合多个对象来使用。FilterInputStream类型:

  1. DataInputStream可以以流的形式读取基本数据类型(int,char,long等)。
  2. BufferedInputStream代表使用"缓冲区"进行读取。
  3. LineNumberInputStream跟踪输入流中的行号,使用getLineNumber()和setLineNumber(int numer).
  4. PusheBackInputStream具有"能弹出一个字节的缓冲区",可以将最后读到的一个字节回退,通常作为编译器的扫描器。

 

二、OutputStream

OutputStream为输出流的基类,它的子类表示了不同数据源的输出流,输出流决定了输出的目标:字节数组、文件、管道。

  1. ByteArrayOutputStream为要输出的"流"的数据在内存中创建缓冲区。
  2. FileOutputStream文件输出流。
  3. PipedInputStream管道输出流。

而OutputStream一般也使用FilterOutputStream来组合多个对象提供输出功能。FilterInputStream类型:

  1. DataOutputStream与DataInputStream对应,想输出流中写入基本数据类型。
  2. PrintStream格式化输出。
  3. BufferedOutputStream表示使用"缓冲区"输出数据,可以用flush()清空缓冲区。可以指定缓冲区大小。

三、Reader和Writer

Reader和Writer提供了字符的输入和输出功能,InputStreamReader可以把InputStream转换为Reader,OutputStreamWriter可以把OutputStream转换为Writer。他们之间的具体转换如下:

InputStream Reader,适配器:InputStreamReader
OutputStream Writer,适配器:OutputStreamWriter
FileInputStream FileReader
FileOutputStream FileWriter
StringBufferInputStream StringReader
无对应 StringWriter
ByteArrayInputStream CharArrayReader
ByteArrayOutputStream CharArrayWriter
PiedInputStream PiedReader
PiedOutputStream PiedWriter

四、RandomAccessFile

RandomAccessFile不是InputStream或OutputStream的继承,而是一个独立的文件读写类,适用于大小已知的记录组成的文件,可以用seek()方法将记录从一处转到另一处。同时它支持搜索方法,并且只适用于文件。1.4后它的大部分功能由nio存储映射文件替代

五、nio

nio使用缓冲器ByteBuffer在通道之间传输数据,i/o中有三个类可以产生FileChannal,分别是FileInputStream,FileOutputStream和RandomAccessFile.可以向通道传递用于读写的ByteBuffer.

六、aio

转载于:https://my.oschina.net/emperror/blog/866575

你可能感兴趣的文章
(NO.00001)iOS游戏SpeedBoy Lite成形记(二十六)
查看>>
sass:常用备忘
查看>>
枚举的一些用法
查看>>
IOS开发之网络编程--文件压缩和解压缩
查看>>
jQuery源码-jQuery.fn.attr与jQuery.fn.prop
查看>>
【Mysql 学习】自动增长列
查看>>
【MySql】mysqldump 的用法
查看>>
剑指offer系列之二十二:二叉搜索树的后续遍历序列
查看>>
【SICP练习】98 练习2.73
查看>>
Redux教程2:链接React
查看>>
IMAGES RE-SIZE IN MAGENTO
查看>>
android给未签名的apk签名
查看>>
PostgreSQL 妙用explain Plan Rows快速估算结果集数量
查看>>
常用的Css函数
查看>>
MVP应用架构模式
查看>>
AT招聘信息爬虫
查看>>
设计模式之代理模式
查看>>
mysql 数据库导入与导出
查看>>
Spring Boot集成JasperReports生成PDF文档
查看>>
flutter 屏幕尺寸适配 字体大小适配
查看>>