Java学习笔记32——字符缓冲流

字符缓冲流

字符流

字符缓冲流

  • BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
  • BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。默认值足够大,可用于大多数用途

构造方法
BufferedWriter(Writer out)

BufferedReader(Reader in)

java 复制代码
public class CopyJavaDemo03 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("test.java"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("copy03.java"));
//        int ch;
//        while ((ch= br.read())!=-1){
//            bw.write(ch);
//        }
        char[] chs = new char[1024];
        int len;
        while ((len = br.read(chs)) != -1) {
            bw.write(chs, 0, len);
        }
        bw.close();
        br.close();
    }
}

注意!!!!
BufferedWriter是缓冲输入流,意思是调用BufferedWriter的write方法时候。数据是先写入到缓冲区里,并没有直接写入到目的文件里。必须调用BufferedWriter的flush()方法。这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里。或者你可以调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先刷新一下该缓冲流。也会把数据写入到目的文件里

字符缓冲流的特有功能

BufferedWriter 中有一个功能void newLine():作用是写一个行分隔符,由系统属性定义,能适应不同的系统

BufferedReader中有一个功能==public String readLine()==作用是读一行文字,结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾已经到达,则为null

IO流小结

字节流

  • 字节输入流
    int read() 一次读取一个字节
    int read(byte[] bys) 一次读取一个字节数组
    InputStream是抽象类使用的是FileInputStreamBufferedInputStream

  • 字节输出流
    void write(int ch) 一次写一个字节
    void write(byte[] bys,int index,int len) 一次写一个字节数组的一部分
    OutputStream是抽象类使用的是FileOutputStreamBufferedOutputStream

字节流可以复制任意文件数据,有4种方式一般采用字节缓冲流一次读写一个字节数组的方式

字符流

  • 字符输入流Reader
    int read() 一次读取一个字符
    int read(char[] chs) 一次读取一个字符数组
    Reader是抽象类使用的是InputStreamReaderBufferedReader (有一个特有方法String readLine())

  • 字符输出流Writer
    void write(int ch) 一次写一个字符
    void write(char[] chs,int index,int len) 一次写一个字符数组的一部分
    Writer是抽象类使用的是OutputStreamWriterBufferedWriter (包含 void newLine() 写一个换行符和void write(String line) 一次写一个字符串)

由于命名太长,读文件的时候使用FileReader, 写文件的时候使用FileWriter,但是涉及到编码问题的时候只能用InputStreamReader和OutputStreamWriter

字符流只能复制文本数据,有5种方式,一般采用字符缓冲流的特有功能

相关推荐
楚韵天工14 分钟前
宠物服务平台(程序+文档)
java·网络·数据库·spring cloud·编辑器·intellij-idea·宠物
helloworddm15 分钟前
Orleans Stream SubscriptionId 生成机制详解
java·系统架构·c#
星域智链19 分钟前
宠物智能用品:当毛孩子遇上 AI,是便利还是过度?
人工智能·科技·学习·宠物
失散1319 分钟前
分布式专题——43 ElasticSearch概述
java·分布式·elasticsearch·架构
ajsbxi19 分钟前
【Java 基础】核心知识点梳理
java·开发语言·笔记
呱呱巨基37 分钟前
vim编辑器
linux·笔记·学习·编辑器·vim
新子y43 分钟前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
聪明的笨猪猪1 小时前
Java JVM “调优” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
"菠萝"1 小时前
C#知识学习-017(修饰符_6)
学习·c#
重整旗鼓~1 小时前
28.redisson源码分析分布式锁
java·开发语言