Day-13 java-map迭代、字符流字节流、装饰模式

Map的迭代方式

//使用迭代器
Iterator it = list.iterator(); 
//判断有没有下一个
it.hasNext();
it.Next(); -> 返回值为Object
Object o = it.next();
//
while(it.hasNext();

BufferedWriter 装饰模式

BufferedWriter{
		Writer out;
		Write(){
		……
		out.write();  核心代码
…
}

}

实现方式
Buffered类继承Writer类,在类中添加Writer类型的成员变量,对相应方法进行重写时,调用成员变量的方法完成
示例如下

class BufferedWriter extends Writer{
	Wtiter out;
	Char[ ] cb = new char[8192];
	public void writer(String str){
	//1.先将数据写入缓冲区
	cb.xxx
	//2.如果cb已满,写入到out中
	}
	

public void close(){
	//1.清理cb
	//2.关闭out
}

}

字符流的缓冲区

缓冲区的出现提高了对数据的读写效率
对应类:

  1. BufferedWriter
  2. BufferedReader
    缓冲区要结合流才能使用
    在流的基础上对流的功能进行了增强

Junit
单元测试框架

格式:@Test

无需main函数,使用interface接口

BufferedReader{
	//
	int read( ){
		
		
}
	
}

转换流

InputStreamReader,OutputStreamWriter
由来:
方便流与字节流之间的桥梁
方便了字符流与字节流之间的操作
转换流的应用
字节流中的数据都是字符时,转成字符流操作更高效

输入输出标准流

System类中的字段:in , out
它们各代表了系统标准的输入和输出设备
默认输入设备时键盘,输出设备是显示器
System.in的类型时InputStream
System.out的类型是PrintStream是OutputStream的子类FilerOutputStream的子类

标准输入输出流样例

获取键盘录入数据,然后将数据流向服务器,那么显示器就是目的地。
通过System类的setIn,setOut方法对默认设备进行改变

System.setIn(new FileInputStream(“1.txt”));		//将源改成文件1.txt
System.setOut(new PrintStream(new FileOutputStream(“2.txt”)));		//将目的改成文件2.txt

因为字节流处理的是文本数据,可以转换成字符流,操作更方便

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

字节流

  1. 基本操作与字符流类一样
  2. 但他不仅可以操作字符,还可以操作媒体文件
  3. FileInputStream
    支持skip()方法,skip向后跳的时候不能超过文件开头地址,可以超过文件尾地址
  4. FileOutputStream
    不支持skip
  5. RandomAccessFile
    随机访问文件,定位到文件的任意位置

流的基本应用小结

  1. 流是用来处理数据的
  2. 处理数据时,一定要娴明确数据源,与数据目的地(数据汇)
  3. 数据源可以是文件,可以是键盘
  4. 数据目的地可以是文件,显示器或者其他设备
  5. 流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理,转换处理等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值