JAVA 中 字符流的缓冲区
分为了BufferedWriter 和BufferedReader
先讲BufferedWriter
作用:
缓冲区要结合流才可以使用,而且在流的基础上对流的功能进行了增强。我们也可以说,在我们以后的实际运用之中,为了增强一下IO流的读写能力,我们就要加入缓冲区这个角色,我们可以理解是为了提高效率而这样做的。
另外还有一点是,在用到缓冲区就要记得刷新。
解释:
我们用通俗的语言解释一下缓冲区的作用。首先,我们要假设我们很口渴,但是只有一个一滴一滴滴得很慢的水龙头,这时的我们是将嘴靠近去一滴一滴去喝还是利用一个杯子,当杯子装满一杯后,我们一饮而尽。这里,充当这个容器的东西杯子便是我们本章所要讲的缓冲区。
利用缓冲区的方法将字符串写入目标文档中
/*
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须要先有流对象。
*/
import java.io.*;
public class BufferedWriterDemo
{
public static void main(String[] args)throws IOException
{
//创建一个字符写入的流对象
FileWriter fw=new FileWriter("quyuquan2017.txt");
//为了提高字符写入流的效率,加入了缓冲区。
//只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
BufferedWriter bufw=new BufferedWriter(fw);
bufw.write("abcde");
bufw.flush();
fw.close();
}
}
结果
再讲BufferedReader
readLine()用法
readLine() 读取一个文本行,通过下列字符之一既可以为某行已终止,换行(‘\n’),回车(‘\r’)或者回车后直接跟着换行。
返回:包含了该行内容的字符串,不包含任何行的终止符,如果已到达的流末尾,则会返回null
字符读取流缓冲区
import java.io.*;
public class BufferedReaderDemo
{
public static void main(String[] args)throws IOException
{
//创建一个读取流对象和文件相关联。
FileReader fr=new FileReader("quyuquan1996.txt");
//为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
BufferedReader bufr=new BufferedReader(fr);
String line=null;
while((line=bufr.readLine())!=null)//一行一行读取,在得到返回值是null后停止读取
{
System.out.println(line);
}
bufr.close();//close()中已经包含了flush
}
}
结果
readLine() 用法
通过缓冲区复制一个.java文件
/*
通过缓冲区复制一个.JAVA文件
*/
import java.io.*;
public class CopyTextBuff
{
public static void main(String[] args)
{
BufferedReader bufr=null;
BufferedWriter bufw=null;
try
{
bufr=new BufferedReader(new FileReader("BufferedWriterDemo.java"));
bufw=new BufferedWriter(new FileWriter("Bufferwriter_Copy.txt"));
String line=null;
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();//没有这步是不能换行的
bufw.flush();
/*
在这里需要提一点的是:readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符
*/
}
}
catch(IOException e)
{
throw new RuntimeException("读取失败");
}
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
结果
总结
了解和运用
BufferedWriter bufw=new BufferedWriter(fw);
BufferedReader bufr=new BufferedReader(fr);
readLine()
readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符
代码较为简单,但是比较基础,毕竟文本处理是我们今后在编程路上会天天用到的东西,所以我在这里详细的写下我的笔记也不为过。