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是抽象类使用的是FileInputStream 和BufferedInputStream

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

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

字符流

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

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

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

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

相关推荐
Joy T2 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
m0_587383005 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·5 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
代码不停6 小时前
自动化测试(java)
java·开发语言·selenium·自动化
滕州市燕猫虎计算机科技工作室个体工商户6 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海7 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
志尊宝7 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金8 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
后季暖8 小时前
电商问数笔记(2)
笔记
xier_ran9 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习