黑马程序员--java基础--IO流(二)

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流>-----

4.缓冲字符流BufferedWriter和BufferedReader

缓冲区的出现是为了提高对文件读写的效率

缓冲区所对应的类:BufferedWriter,BufferedReader分别是Writer类和Reader类的子类。

(1)     BufferedWriter的基本方法:

BufferedWriter(Writer out)   BufferedWriter(Writer out  ,  int  sz)   // 构造方法 ,必须传一个字符输出流对象

flush()  // 只要使用缓冲区,就一定要刷新

close()  // 关闭缓冲区中的流对象。此时不需要再调用Writer的关闭流方法

newLine()// 新增方法 , 换行方法,该方法具有跨平台型。

(2) BufferedReader的基本方法:

BufferedReader(Reader in),  BufferedReader(Readerin,  int  sz)  //构造方法,同上

close( )  //关闭缓冲区的流对象,同样不需再调用 Reader的关闭流方法

String  readLine( )  //新增方法,读入一行文件数据,读到文件结尾时返回null。

该方法原理:它在内存中创建了一个字符串数组,用read方法读取文件一行的字符存到数组中,当遇到回车"\r\n"字符的时候,返回已经存到数组中的文件中某一行的字符。

5.缓存输入输出流复制文件

可以使用readLine方法进行读取文件,以提高读取速度,需要注意的是readLine方法返回的时候只返回回车符之前的内容,并不返回回车符,所以在进行数据写入的时候,要加上newLine()方法。

import java.io.*;
public class BufferCopyDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		BufferedWriter bw=null;
		BufferedReader br=null;
		try{
			bw=new BufferedWriter(new FileWriter("copytext.txt"));
			br=new BufferedReader(new FileReader("text.txt"));
			String line;
			while((line=br.readLine())!=null){
				bw.write(line);
				bw.newLine();
				bw.flush();
			}
			
			
		}
		catch(IOException e){
			throw new  RuntimeException ("复制出问题了");
		}
		finally{
			
			try{
				if(bw!=null){
					bw.close();
				}
			}
			catch(IOException e){
				throw new  RuntimeException ("关闭流出问题了");
			}
			try{
				if(br!=null){
					br.close();
				}
			}
			catch(IOException e){
				throw new  RuntimeException ("关闭流出问题了");
			}
		}

	}

}



6.装饰设计模式

如果想要对原有类进行功能增强时,可以定义新类,将原有类的对象传入,基于已有功能并提供加强功能,新类成为装饰类。

装饰设计模式和继承的对比:

1)装饰设计模式是使用构造函数进行参数传递,来增强已有功能;

2)如果为了增加某个功能而产生子类(使用继承),那么这个体系会变得臃肿;

3)装饰类要比继承更加灵活,装饰类只是用来增强已有对象的功能,它们属于同一个体系,所以避免了继承体系的臃肿,而且降低了类与类的关系

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值