---------------------- android培训、java培训、期待与您交流! ----------------------
字符流的缓冲区
- 缓冲区的出现提高了对数据的读写效率。
- 对应类
- BufferedWriter【后缀是父类,前缀是功能】
- BufferedReader
- 缓冲区要结合流才能使用
- 在流的基础上对流的功能进行了增强
- 缓冲区的出现是为了提高流的操作效率而出现的,所以在创建缓冲区之前,必须先有流对象
BufferedWriter
public class BufferedWriter
extends Writer
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWrite {
public static void main(String[] args) {
FileWriter fw = null;
BufferedWriter bf = null;
try {
fw = new FileWriter("Demo.txt");
//为了提高流的写入效率,加入了缓冲技术
bf = new BufferedWriter(fw);
for (int i = 0; i < 5; i++) {
bf.write("abcd" + i);
bf.newLine();
//只要用到缓冲区,就得记得刷新
bf.flush();
}
} catch (Exception e) {
System.out.println(e.toString());
} finally {
try {
if (bf != null) {
//其实关闭缓冲区,就是关闭缓冲区中的流对象
bf.close();
}
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}
BufferedReader
public class BufferedRead
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了
public String readLine()
throws IOException
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
抛出:
IOException - 如果发生 I/O 错误
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReader2 {
public static void main(String[] args) {
FileReader fr = null;
BufferedReader bufr = null;
try {
fr =new FileReader("Demo.txt");
bufr = new BufferedReader(fr);
String value = null;
while((value = bufr.readLine()) != null){
System.out.println(value);
}
} catch (Exception e) {
System.out.println(e.toString());
}finally{
if(bufr != null){
try {
bufr.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}
}
小测试:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 字符读取流缓冲区;
* 该缓冲区提供了一个一次读一行的方法readLine(),方便对于文本数据的获取。
* 当返回null时,表示读到文件末尾。
* readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符。
*/
public class BufferedReaderTest {
public static void main(String[] args) {
BufferedReader bufr = null;
BufferedWriter bufw = null;
try {
bufr = new BufferedReader(new FileReader("Demo2.txt"));//匿名对象,因为以后不用直接操作流
bufw = new BufferedWriter(new FileWriter("D:\\Demo2Test.txt"));
String temp = null;
while((temp = bufr.readLine()) != null){
bufw.write(temp);
bufw.newLine();
bufw.flush();
}
} catch (Exception e) {
throw new RuntimeException("文件读写失败");
}finally{
if(bufr != null){
try {
bufr.close();
} catch (IOException e) {
throw new RuntimeException("读取流关闭异常");
}
try {
if(bufw != null)
bufw.close();
} catch (Exception e2) {
throw new RuntimeException("写入流关闭异常");
}
}
}
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------