缓冲区的出现提高了对数据的读写效率
对应类:BufferedWriter、BuffereReader
缓冲区要结合流才可以使用
在流的基础上对流的功能进行了增强
加入缓冲区的文件读写操作:
import java.io.*;
/**
*
* 缓冲区的出现是为了提高流的操作效率而出现的。
* 所以在创建缓冲区之前,必须要现有流对象。
*/
public class BufferedWriterDemo {
public static void main(String[] args) throws IOException{
// 创建一个字符写入流对象
FileWriter fw = new FileWriter("buf.txt");
//为了提高字符写入流效率,加入了缓冲技术。
//只要将需要被提高效率的流的对象作为参数传递给缓冲区的构造函数即可。
BufferedWriter bfw = new BufferedWriter(fw);
bfw.write("abcde");
bfw.newLine();//换行用的;
//记住,只要用到缓冲区,就要记得刷新。
bfw.flush();
//关闭缓冲区
//其实关闭缓冲区,就是在关闭缓冲区中的流对象
bfw.close();
}
}
import java.io.*;
/**
*
* 字符读取流缓冲区
* 该缓冲区提供了一个一次读一行的方法readLine,方便于对文本数据的获取
* 当返回null时,表示读到文件末尾。
*/
public class BuffeaedReaderDemo {
public static void main(String[] args) throws IOException{
// 创建一个读取流对象和文件相关联
FileReader fr = new FileReader("buf.txt");
//为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
BufferedReader bfr = new BufferedReader(fr);
String line = null;
while((line = bfr.readLine()) != null)
{
System.out.println(line);
}
bfr.close();
}
}
加入缓冲区的文件拷贝操作:
import java.io.*;
/**
*
* 通过缓冲区复制一个文件
*/
public class CopyTextByBuf {
public static void main(String[] args) {
BufferedReader bfr = null;
BufferedWriter bfw = null;
try{
bfr = new BufferedReader(new FileReader("demo01.txt"));
bfw = new BufferedWriter(new FileWriter("demo02.txt"));
String line = null;
while((line = bfr.readLine()) != null)
{
bfw.write(line);
bfw.newLine();//文件内容有多行时,加入换行
bfw.flush();
}
}
catch(IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if(bfr != null)
bfr.close();
}
catch(IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if(bfw != null)
bfw.close();
}
catch(IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}