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

相关推荐
Leonardo_Fibonacci几秒前
skbbs-day5
java·开发语言·mybatis
TheSumSt3 分钟前
Python丨课程笔记Part5:更多进阶部分
笔记·python·microsoft
高山上有一只小老虎4 分钟前
IDEA Community如何使用外置的tomcat
java·ide·intellij-idea
海南java第二人7 分钟前
Java类加载机制深度解析:从双亲委派到自定义加载的完整指南
java·spring
侧耳倾听1118 分钟前
基准测试框架JMH
java·测试工具
草莓熊Lotso9 分钟前
C++ 智能指针完全指南:原理、用法与避坑实战(从 RAII 到循环引用)
android·java·开发语言·c++·人工智能·经验分享·qt
better_liang9 分钟前
每日Java面试场景题知识点之-Dubbo
java·dubbo·rpc框架·企业级开发
Qiuner10 分钟前
Spring Boot AOP(五) 高级特性与源码实践
java·spring boot·后端
ℳ₯㎕ddzོꦿ࿐11 分钟前
Spring Boot MCP(stdio)工具实现的注意事项(踩坑总结)
java·spring boot·后端
代码方舟12 分钟前
Java 进阶:基于 Spring Boot 集成天远数据“人脸比对 V3”的最佳实践
java·大数据·spring boot·python