IO流小结

流是字节的序列的抽象概念,数据流向,主要用于硬盘、内存、IO设备上的数据操作。

Java流分为三类:
1.按照处理数据大小:字节流和字符流
2.按照流的方向:输入流和输出流
3.按照功能分为:节点流和处理流

字节流和字符流:

1)字节流 : 读取数据的最小单位是字节,8bit,有两个抽象基类InputStream/OutputStream,可以处理设备上的所有类型数据。

2)字符流:读取数据的最小单位是字符,原理是基于字节流读取字节后查询指定编码表,返回对应字符,有两个抽象基类Reader/Writer,只能处理文本类型数据。

InputStream中常见的方法:

int read()

读取一个字节,返回值为所读得字节

int read(byte b[])

读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际独取的字节的数量。

int read(byte b[] ,int off,int len)

读取len个字节,放置到以下标off开始字节数组b中,返回值为实际读取的字节的数量。

int available()

返回值为流中尚未读取的字节的数量。

long skip(long n)

读指针跳过n个字节不读,返回值为实际跳过的字节数量

close()

流操作完毕后必须关闭

mark(int readlimit)

纪录当前指针的所在位置.readlimit表示读指针读出的readlimit个字节后所标记的指针位置才实效。

reset()

把读指针重新指向用mark方法所记录的位置

boolean markSupported()

当前的流是否支持读指针的记录功能。

OutputStream中常见的方法:

write(int b)

往流中写一个字节b

write(byte b[])

往流中写一个字节数组b

write(byte b[],int off,int len)

把字节数组b中从下标off开始,长度为len的字节写入流中

flush()

刷空输出流,并输出所有被缓存的字节,由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。

close()

流操作完毕后必须关闭。

Reader中常见的方法:

int read()

读取一个字符,并返回读到的这个字符,读到流的末尾则返回-1。

int read(char[])

将读到的字符存入指定的数组中,返回的是读到的字符个数,

读到流的末尾则返回-1。

close()

读取字符其实用的是window系统的功能,就希望使用完毕后,

进行资源的释放。

FileReader除了自己的构造函数外没有特有的方法:

–用于读取文本文件的流对象。
–用于关联文本文件。
–构造函数FileReader(String fileName)

在读取流对象初始化时,必须要指定一个被读取的文件,

如果该文件不存在则会发生FileNotFoundException异常。

Writer中常见的方法:

write()

将一个字符写入到流中。

write(char[])

将一个字符数组写入到流中。

writer(String)

将一个字符写入到流中。

flush()

刷新流,将流中的数据刷新到目的地中,流还存在。

close()

关闭资源,在关闭钱会先调用flush(), 刷新流中的数据到目的地。

输入流和输出流:

1)输入流:文件----》程序
2)输出流:程序----》文件

处理流和节点流(重点介绍):
1)节点流:直接对数据源进行读写操作
2)处理流:在节点流的基础上,通过装饰(装饰模式)增强功能对数据源间接读写操作

 1)缓冲流(Buffered):节点流之上进行加工,添加缓冲区(FileInputStream=>BufferedInputStream)这样避免读取文件时候,大量进行对硬盘的读写,而是从缓冲区进行读写,提高读写效率。

 2)转换流(StreamReader):即字节流与字符流的相互转换。比如:在进行读写字节流设备时候,我想调用读取字符流的函数,就可以通过转换流。将(字节流=>字符流) InputStreamReader in=new InputStreamReader(new InputStream())注意只能是字节流转换为字符流!!

 3) 数据流(Data):当读取写入具体的数值数据时候(Long Double)就可以采用DataInputStream和DataOutputStream流进行功能更加强大的写入和读取功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值