美文网首页程序员java学习记录
javaIO流---转换流与缓冲流

javaIO流---转换流与缓冲流

作者: 一花一世界yu | 来源:发表于2020-05-06 23:00 被阅读0次

    一、重点知识

    抽取方法的快捷键 alt+shift+m

    fileread和filewriter是转换流的子类

    write是可以直接写出字符串的,或者写出字符串得一部分

    转换流的父类是read 和 writer

    关闭流只关闭外层流就可以了,外层流调用close会自动调用内层流的close

    转换流一般在网络编程中使用,因为网络编程中获得的都是字节流,所以需要转换流

    String类型数据在创建时也可以指定编码集

    只有转换流可以指定编码集,别的流都不可以

    缓冲流自带字节数组作为缓冲区容量为1024*8,数组在内存空间中,所以读取速度快

    处理流和节点流并不一定有子父类关系

    缓冲流的优势在于他的缓存空间自己管理,不需要我们去管理了

    二、重点问题

    如果用字符流读取不同编码得文件会乱码吗

    会的,因为不用的编码对应着不同的规则,编码决定了解码的方式,开发工具有自己开始设置的字符集

    三、课堂知识

    3.1、FileReader

    读取方法

    read()-->int,读取一个字符,返回值就是读到的数据,末尾-1.

    read(char[] cs)-->int,读取多个字符,存入cs字符数组中,返回值读取的个数。末尾-1

    read(char[] cs,int off,int len)-->int,读取多个字符,末尾-1

    读入的文件一定要存在,否则就会报FileNotFoundException。

    3.2、FileWriter

    1、构造方法:

    FileWriter(String path);

    FileWriter(File file);

    FileWriter(String path,boolean append);

    FileWriter(File file, boolean append);

    2、写出数据

    void write(int),将参数这个字符,写出去

    void write(char[] cs),将整个cs数组的所有数据,全部写出

    void write(char[] cs,int off,int len),将cs数组的一部分写出,从下标off开始,len个

    void write(String s),直接将一个字符串写出

    void write(String s, int off,int len),写出字符串的一部分

    3.3、InputStreamReader

    InputStreamReader:将一个字节的输入流转换为字符的输入流

    解码:字节、字节数组  --->字符数组、字符串

    3.4、OutputStreamWriter

    OutputStreamWriter:将一个字符的输出流转换为字节的输出流

    编码:字符数组、字符串 ---> 字节、字节数组

    3.5缓冲流

    1.缓冲流涉及到的类:

    * BufferedInputStream

    * BufferedOutputStream

    * BufferedReader

    * BufferedWriter

    2.作用

    缓存流:目的:高效。

    原理:自带了一个数组作为缓冲区。读写发生在数组上。数组占内存,速度很快。

    FileInputStream

    read()-->int,访问磁盘,操作文件,读一个字节回来。。

    BufferedInputStream

    read()-->int,先找缓冲区,从缓冲区中读取一个字节回来。fill(),读取磁盘文件,填充缓冲区

    byte[] bs ,作为缓冲区:1024*8。

    相关文章

      网友评论

        本文标题:javaIO流---转换流与缓冲流

        本文链接:https://www.haomeiwen.com/subject/mcngghtx.html