黑马程序员---BufferedReader和BufferedWriter两个类

来源:互联网 发布:复杂网络聚类方法 编辑:程序博客网 时间:2024/04/29 11:58

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

BufferedReader:

从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。 通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

 BufferedReader in   = new BufferedReader(new FileReader("foo.in")); 

将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。 可以对使用 DataInputStream 进行按原文输入的程序进行本地化,方法是用合适的 BufferedReader 替换每个 DataInputStream。

BufferedReader bfr=new BufferedReader(new FileReader("info.txt"));
 char[] cbuf=new char[1024];
 int len=0;
 bfr.mark(2);
 //bfr.reset();
 System.out.println(bfr.ready());
 while((len=bfr.read(cbuf))!=-1)
 {
  //如果保证下一个 read() 不阻塞输入,则返回 True,否则返回 false。注意,
  //返回 false 并不保证阻塞下一次读取。
  //可用此方法判断read方法是否处于阻塞状态。
  System.out.println(bfr.ready());
  System.out.println(new String(cbuf,0,len));
 }
 bfr.close();

BufferedWriter:

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。 该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。 通常 Writer 将其输出立即发送到基础字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

 PrintWriter out   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); 

将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的

BufferedWriter bw=new BufferedWriter(new FileWriter("info.txt",true));
  bw.write("test");
  bw.newLine();
  bw.flush();
  bw.close();

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

 

原创粉丝点击