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 }
运行效果,如下: