Buffered Reader/Writer字符输入缓冲流
Buffered Reader字符输?入缓冲流
- 为了提高了单个字符读写的效率,进行字符批量的读写;为了提高字符流读写的效率,引入了缓冲机制
- 采用包装设计模式(锦上添花)
- BufferedReader
- 简介:当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read)方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取
- 构造函数
BufferedReader(Reader in)BufferedReader(Reader in,int sz)讲解:创建一个使用指定大小输入缓冲区的缓冲字符输入流。
boolean ready()
讲解:判断此流是否已准备好被读取,依赖其他流,所以一般需要做判断int read()
讲解:读取单个字符int read(char[]cbuf,int off,int len)
讲解:读取一部分字符到数组里面,从数组下标off处放置1ength长度的字符String readLine()String readLine()
讲解:读取一整行文本行,返回一整行字符串,如果读到行尾了就返回nu11,注意返回的一行字符中不包含换行符void close()
讲解:关闭流释放资源
package domee.chapter12;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class BufferReaderTest {
public static void main(String[] args) throws IOException {
String dir = "C:\\Users\\123\\Desktop\\test\\BufferReaderTest.txt";test2(dir);}public static void test1(String dir) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new FileReader(dir));if (!bufferedReader.ready()){
System.out.println("文件流暂时无法读取");return;}int size ;char[] chars = new char[1024];while ((size = bufferedReader.read(chars)) != -1 ){
System.out.println(new String(chars,0,size));}bufferedReader.close();}public static void test2(String dir) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new FileReader(dir));if (!bufferedReader.ready()){
System.out.println("文件流暂时无法读取");return;}String string;while ((string = bufferedReader.readLine()) != null ){
System.out.println(string);}bufferedReader.close();}
}
BufferedWriter字符输出缓冲流
- BufferedWriter
- 简介:写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出
- 构造函数
Bufferedwriter(Writer out)Bufferedwriter(Writer out,int sz)
void write(int c)
讲解:写入一个字符void write(char[]cbuf,int off,int 1en)
讲解:写入字符数组的一部分,通过off和len控制。void write(String s,int off,int i)
讲解:写入字符数组的一部分,通过off和len控制)void newLine()
讲解:写入一个换行符号void close()
讲解:关闭输入流并释放与该流关联的系统资源void flush()
讲解:write是写到缓冲区中,可以认为是内存中,当缓冲区满时系统会自动将缓冲区的内容写入文件,但是一般还有一部分有可能会留在内存这个缓冲区中,所以需要调用flush空缓冲区数据。
package domee.chapter12;import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class BufferWriterTest {
public static void main(String[] args)throws IOException {
String dir = "C:\\Users\\123\\Desktop\\test\\BufferWriterTest.txt";test1(dir);}public static void test1(String dir)throws IOException{
BufferedWriter writer = new BufferedWriter(new FileWriter(dir));char ch = '哈';String string = "哈哈,早上好";String string1 = "你好,世界";writer.write(ch);writer.write(string,0,string.length());writer.newLine();writer.write(string1);writer.close();}}