Java_08_30课堂总结

来源:互联网 发布:js判断密码长度 编辑:程序博客网 时间:2024/05/18 20:52
 

12.5字符流

1、缓冲的字符流BufferedReader/BufferedWriter

采用缓冲处理是为了提高效率,如果没有缓存,例如FileReader对象,每次调用read()方法进行读操作时,都会直接去文件中读取字节,转换成字符并返回,这样频繁的读取文件效率很低。

缓冲的字符流的出现提高了对流的操作效率,原理就是将数组进行封装。

在使用缓冲的字符流对象时,缓冲的存在是为了增强流的功能,因此在建立缓冲的字符流对象时,要先有流对象的存在。

public BufferedReader(Reader in) ;

public BufferedReader(Reader in, int sz)

public BufferedWriter(Writer out) ;

public BufferedWriter(Writer out, int sz); 

BufferedReader的特有方法:public String readLine();//一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null

BufferedWriter的特有方法:public void newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。

使用缓冲的字符流时其实就是使用流对象的方法,只不过加入了数组,对数据进行了临时存储,为了提高操作数据的效率。

 上课实例:

1import java.io.*;

public class BufferedIODemo2 {

public static void main(String[] args){

FileReader fr=null;

BufferedReader br=null;

try{

fr=new FileReader("res/demo.txt");

br=new BufferedReader(fr,255);

String str=null;

while((str=br.readLine())!=null){

System.out.println(str);

}

//str=br.readLine();

//while(str!=null){

//System.out.rintln(str);

//str=br.readLine();

//}

}catch(FileNotFoundException e){

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(br!=null){

try {

br.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

实例2

import java.io.*;

public class MyBufferedReader {

//属性

private Reader r;

//构造方法

public MyBufferedReader(Reader r){

this.r=r;

}

//readLine()方法;增加一个缓冲区,然后调用r的对象的read()读取字符放到缓冲区,

//当读到行标记时,把缓冲区中的字符转换成字符串返回

public String readLine(){

//缓冲区

StringBuffer strB=new StringBuffer();

int ch=0;

try {

while((ch=r.read())!=-1){

if(ch=='\r')

continue;

if(ch=='\n')

return new String(strB);

else

strB.append((char)ch);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(strB.length()!=0)

return new String(strB);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

return null;

}

//close()方法

public void close(){

try {

r.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

原创粉丝点击