Java 中对各种流的认识和使用

@**

Java 中对各种流的认识和使用

**
高级java编程,重要的是思想,即是think java,没错,语法绝对不是重点,不是不要记忆,而是需要我们不要纠结。
1、java中的IO流和文件,类比我们现实生活中的水流,I:是InputStream,是输入流,将外界的数据传输到我们的
程序代码中,这就需要一定的通道,在我们的API中存在着四个抽象类,他们的继承子类实现了输入的相关方法。对于
OutputStream来说也是一样的。
四个顶级抽象类分别为InputStream、OutputStream、Reader、Writer。
前者为字节输入输出流的抽象父类,后者为字符输入输出流的抽象父类。
2、就拿InputStream的继承类FileInputStream类来说,有很多的方法来实现通道的功能。
方法有read(),close(),skip(),reset(),mark().
1> int read() 表示读取下一个字节,返回值是字符的位置。
2> int read(byte[] b) 表示每次读取字节的个数,个数就是数组的长度。返回值是每次读取的字符数。
3> int read(byte[] b,off,len ) 三参方法中的off是偏移量,表示从哪个字符位置开始读取,
len表示每次读取数组中的字符个数。返回值还是和2>一样,同样是每次读取的字符数。
4> 对象.close() :关闭资源。
5> reset()重置读取字符的位置。
6> mark() 标记字符位置
7> skip() 跳过n个字节。

3、OutputStream中有的方法有:write(),close(),flush().
	1>write() 方法的用法和read一致,只是文件输出流,
	2> flush()刷新缓冲池中的数据,强制将缓冲池中剩余字符输出到文件中。
	3> close() 关闭通道,释放资源。
	
4、缓冲
	当高速内存读取和输出磁盘中的低速文件时,会出现CPU等待的情况,为解决这个问题,就出现了缓存的概念,
	在我们的程序代码中就体现在在类中维护一个数组,数组
	的长度就是缓冲区的大小,输入时 先将一部分数据存入缓冲区,再将缓冲区的全部数据输入程序代码中。
	默认缓冲区的大小就是8192个字节。

5、包装流:不能自己单独使用,必须结合其他流一块使用。
	包装流的作用是用来包装其他节点流,达到增强效果的作用。
	这种设计思想在OOAD中称之为装饰者模式
	节点流:功能比较基本的流但可以单独使用。很明确的知道数据的来源和去向。
	
6、缓冲流(字节输入输出)
	BufferedInputStream
	BufferedOutputStream
	
7、对象流
	ObjectInputStream
	ObjectIOutputStream
	可以实现一个java对象的持久化存储,传输的对象必须是可序列化的。
	序列化:把对象中的信息按照一定的顺序转换成字节信息。
	反序列化:将字节信息转换成对象的正常属性。
	通过对象流传输的类中必须实现一个接口 serializable(),可序列化的方法。
	* 对象的各种属性也必须是可序列化的。
8>、字符缓冲流(包装流)
	BufferedReader 
	BufferedWriter
	
	*输入流只能包装输入流
	  输出流只能包装输出流
	  字节流只能包装字节流
	  字符流只能包装字符流
	
	readLine()方法用于输入一行内容。
	newLine()方法用于换行。
	
9>、流执行完毕之后需要关闭,存在缓冲区的流需要关闭,先开的后关,后开的先关,这句话永远是正确的,
	但是在包装流中只需要关闭包装流即可。
	
10>、InputStreamReader
	OutputStreamReader
	字节字符转换流
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值