流的总结

一:节点流:
	1.字节流:能处理一切文件,纯文本、视频、图片、音频
		1)文件字节流:(以文件为源头)FileInputStream
							    FileOutputStream
		2)数组字节流:(以数组为源头)ByteArrayInputStream
							    ByteArrayOutputStream   toByteArray()新增方法,操作不同
	2.字符流:只能处理纯文本文件
		1)文件字节流:FileReader
				      FileWriter
		2)数组字节流:CharArrayInputStream
				      CharArrayOutputStream
					  
二:处理流:增强节点流的功能,提高可靠性
	1.缓冲流:1)字节缓冲流:BufferedInputStream	BufferedOutputStream
		        2)字符缓冲流:BufferedReader   readLine()  一行一行的读取
		   			      BufferedWriter   newLLine()  换行  	相当于"\r\n"
		   			     注意运用新增方法时,不能使用多态
    2.转换流:只能把字节流转换成字符流的,不能把字符流转换成字节流
		1).编码与解码概念:
		         编码:二进制	            编码字符集		字符
		         解码:字符		解码字符集		二进制
		2).乱码原因:
			1)编码与解码字符集不统一
			2)字节缺少,长度丢失
		3).	InputStreamReader	解码(读取操作)
			OutputStreamWriter	编码(写入操作)
	3.处理    基本数据类型+String  保存类型
			DataInputStream   readXxx()
			DataOutputStream  writeXxx()
			注意点:1)读取的顺序与写入的顺序必须相同
				      2)写入到文件中的内容由于保存了数据类型,因此我们无法识别,但计算机可以识别
	4.处理  对象   保存对象
			其实4相当于3的增强版,除了3的功能外,还可以处理对象类型:
		    ObjectInputStream	readObject()  对象的反序列化
		    ObjectOutputStream	writeObject()  对象的序列化
		          注意:1) 不是所用的对象都能序列化    必须是实现了java.io.Serializable接口才能序列化
		                    2) 不是所有的属性都需要序列化,不想序列化的属性使用  transient关键字
	5.打印流:PrintStream
		   System.in    从键盘输入
		   System.out	从控制台输出
		   System.err	和out差不多
		   
	         注意:1)可以改变流向,比如不从键盘接收数据,而从文件中接收数据、输出数据到文件而不是到控制台
	       2)在System中定义了标准控制台:FileDescriptor.in
								  FileDescriptor.out
			可以使用setIn() 和 setOut() 方法进行重定向
三:在流的操作中经常需要关闭流,大量的关闭会很繁琐,基于封装的思想,可以建立一个工具类来专门关闭流:
 
/**
	 * 工具类:关闭流
	 * 可变参数:... 表示可以有很多参数,只能在形参的最后一个位置,处理起来和数组一样
	 * jdk1.7新增特性可以用try-with-resource实现该功能
	 */
	/*
	public static void closeAll(String str, Closeable ... io) {
		
	}// 没有问题
	public static void closeAll(Closeable ... io, String str) {
		
	}// 有问题
	*/
	

	/**
	 * 面向接口编程,实现了Closeable接口的类都有close()方法
	 * @param obj
	 */
	public static void closeAll(Closeable ... io) {
		for(Closeable temp: io) {
			if(null != temp) {
				try {
					temp.close();
				} catch (IOException e) {
					System.out.println("关闭流异常");
					e.printStackTrace();
				}
			}
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值