当前位置: 代码迷 >> 综合 >> Buffered Reader/Writer字符输入缓冲流
  详细解决方案

Buffered Reader/Writer字符输入缓冲流

热度:11   发布时间:2023-12-22 01:01:23.0

Buffered Reader/Writer字符输入缓冲流

Buffered Reader字符输?入缓冲流
  • 为了提高了单个字符读写的效率,进行字符批量的读写;为了提高字符流读写的效率,引入了缓冲机制
  • 采用包装设计模式(锦上添花)
  • BufferedReader
    • 简介:当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read)方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取
    • 构造函数
BufferedReader(Reader in)BufferedReader(Reader in,int sz)讲解:创建一个使用指定大小输入缓冲区的缓冲字符输入流。
  • 常用API
boolean ready()
讲解:判断此流是否已准备好被读取,依赖其他流,所以一般需要做判断int read()
讲解:读取单个字符int read(char[]cbuf,int off,int len)
讲解:读取一部分字符到数组里面,从数组下标off处放置1ength长度的字符String readLine()String readLine()
讲解:读取一整行文本行,返回一整行字符串,如果读到行尾了就返回nu11,注意返回的一行字符中不包含换行符void close()
讲解:关闭流释放资源
  • eg:
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";//test1(dir);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)
  • 常用API
 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空缓冲区数据。
  • eg(会自动创建文件)
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();//未关闭无法写入}}
  相关解决方案