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种方式,一般采用字符缓冲流的特有功能

相关推荐
Jelena1577958579226 分钟前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
神明不懂浪漫1 小时前
【第五章】Java中的继承与多态
java·开发语言
GeekArch3 小时前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
AI多Agent协作实战派3 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit3 小时前
Java+Ai+vue
java·spring·maven
qq_2518364574 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive4 小时前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc
未秃头的程序猿4 小时前
给公司做了个AI客服Agent,用的Spring AI 1.0,3天上线领导拍板了
java·后端·ai编程
曹牧4 小时前
Eclipse 批量文本替换
java·ide·eclipse
程序员清风4 小时前
OpenAI官方发布最新提示词技巧!
java·后端·面试