您的位置:首页 > 职场人生

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

2015-04-28 16:17 176 查看
------<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)装饰类要比继承更加灵活,装饰类只是用来增强已有对象的功能,它们属于同一个体系,所以避免了继承体系的臃肿,而且降低了类与类的关系

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: