字符流的缓冲区。
1、提高读写效率。
2、对应类:
public class BufferedWriter extends Writer将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
构造方法摘要
BufferedWriter(Writer out)
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
创建缓冲区之前,必须要先有流对象。import java.io.*;
class BufferedWriterDemo
{
public static void main(String[] args) throws IOException
{
//创建一个字符写入流对象。
FileWriter fw = new FileWriter("buffered.txt");
//为了提高字符写入流的效率,加入缓冲技术。
//只需要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
BufferedWriter bufw = new BufferedWriter(fw);
bufw.write("abcdef -- Buffered Test.");
//用到缓冲区时,需要刷新。
bufw.flush();
//关闭缓冲区和流对象。两者同时关闭。
bufw.close();
}
}
字符流的缓冲区:
public class BufferedReader extends Reader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
readLine() 读取一个文本行。
import java.io.*;
class BufferedReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("buffered.txt");
//将字符流对象作为参数传递给缓冲对象的构造函数。
BufferedReader bufr =new BufferedReader(fr);
//读取一个问本行。循环读所有文本行。
String s = null;
while ((s = bufr.readLine()) != null)
{
System.out.println(s);
}
}
}
用缓冲区复制文件
import java.io.*;
class CopyTextByBuf
{
public static void main(String[] args)
{
BufferedReader bufr = null;
BufferedWriter bufw = null;
try
{
bufr = new BufferedReader(new FileReader("CopyTextByBuf.java"));
bufw = new BufferedWriter(new FileWriter("CopyTextByBuf.txt"));
String line = null;
while ((line = bufr.readLine()) != null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw new RuntimeException("文件读写失败");
}
finally
{
try
{
if (bufw != null)
{
bufw.close();
}
}
catch (IOException e)
{
throw new RuntimeException("文件写关闭失败");
}
try
{
if (bufw != null)
{
bufr.close();
}
}
catch (IOException e)
{
throw new RuntimeException("文件读关闭失败");
}
}
}
}
设置和获取当前行号
public class LineNumberReader
extends BufferedReader
跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber(),它们可分别用于设置和获取当前行号。
import java.io.*;
class LinenumberReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("buffered.txt");
LineNumberReader lnr = new LineNumberReader(fr);
String line = null;
//设置起始行号
lnr.setLineNumber(100);
while ((line = lnr.readLine()) != null)
{
//打印行号和行内容。
System.out.println(lnr.getLineNumber()+" : "+line);
}
}
}