Java基础知识强化之IO流笔记38:字符流缓冲流之BufferedWriter / BufferedReader使用

1. 字符流缓冲流:

字符流为了高效读写,也提供了对应的字符缓冲流。

  BufferedWriter:字符缓冲输出流

  BufferedReader:字符缓冲输入流

2. BufferedWriter使用:

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

(1)BufferedWriter的构造方法:

构造方法摘要
BufferedWriter(Writer out)
          创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
          创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

(2)BufferedWriter的功能方法:

 1 方法摘要
 2  void    close() 
 3           关闭此流,但要先刷新它。
 4  void    flush() 
 5           刷新该流的缓冲。
 6  void    newLine() 
 7           写入一个行分隔符。
 8  void    write(char[] cbuf, int off, int len) 
 9           写入字符数组的某一部分。
10  void    write(int c) 
11           写入单个字符。
12  void    write(String s, int off, int len) 
13           写入字符串的某一部分。

 

 

(3)BufferedWriter使用代码示例:

 1 package cn.itcast_05;
 2 
 3 import java.io.BufferedWriter;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 
 7 /*
 8  * BufferedWriter:字符缓冲输出流
 9  * 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 
10  * 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。 
11  */
12 public class BufferedWriterDemo {
13     public static void main(String[] args) throws IOException {
14         // BufferedWriter(Writer out)
15         // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
16         // new FileOutputStream("bw.txt")));
17 
18         BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
19 
20         bw.write("hello");
21         bw.write("world");
22         bw.write("java");
23         bw.flush();
24 
25         bw.close();
26     }
27 }

运行效果,如下:

 

 

3. BufferedReader 使用:

    从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。 

(1)BufferedReader 的构造方法:

构造方法摘要
BufferedReader(Reader in)
          创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
          创建一个使用指定大小输入缓冲区的缓冲字符输入流。

 

(2)BufferedReader 功能方法:

 1 方法摘要
 2  void    close() 
 3           关闭该流并释放与之关联的所有资源。
 4  void    mark(int readAheadLimit) 
 5           标记流中的当前位置。
 6  boolean    markSupported() 
 7           判断此流是否支持 mark() 操作(它一定支持)。
 8  int    read() 
 9           读取单个字符。
10  int    read(char[] cbuf, int off, int len) 
11           将字符读入数组的某一部分。
12  String    readLine() 
13           读取一个文本行。
14  boolean    ready() 
15           判断此流是否已准备好被读取。
16  void    reset() 
17           将流重置到最新的标记。
18  long    skip(long n) 
19           跳过字符。

 

(3)BufferedReader 使用代码示例:

 1 package cn.itcast_05;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6 
 7 /*
 8  * BufferedReader
 9  * 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 
10  * 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。 
11  * 
12  * BufferedReader(Reader in)
13  */
14 public class BufferedReaderDemo {
15     public static void main(String[] args) throws IOException {
16         // 创建字符缓冲输入流对象
17         BufferedReader br = new BufferedReader(new FileReader("bw.txt"));
18 
19         // 方式1:一次读一个字符
20         // int ch = 0;
21         // while ((ch = br.read()) != -1) {
22         // System.out.print((char) ch);
23         // }
24 
25         // 方式2:一次读一个字符数组
26         char[] chs = new char[1024];
27         int len = 0;
28         while ((len = br.read(chs)) != -1) {
29             System.out.print(new String(chs, 0, len));
30         }
31 
32         // 释放资源
33         br.close();
34     }
35 }

运行效果,如下:

posted on 2015-10-11 09:09  鸿钧老祖  阅读(273)  评论(0编辑  收藏  举报

导航