字节流和字符流的结构小解

文章目录

1.字节流结构图

字节流和字符流的结构小解

2.字节流类讲解

FileInputSteam

可以实现文件的读取,构造方法
FileInputSteam (String pathname)
FileInputSteam (File file)

BufferedInputStream

可实现更加高效的数据读取
构造方法:
BufferedInputStream (InputStream inputSteam);
参数是一个抽象类,我们要使用他的具体子类
一般使用FileInputStream

FileOutputSteam

可以实现数据的写入,构造方法
FileOutputSteam (String pathname)
FileOutputSteam (File file)

BufferedOutputStream

可实现更加高效的数据写入
构造方法:
BufferedOutputStream (OutputStream outputSteam);
参数是一个抽象类,我们要使用他的具体子类
一般使用FileOutputStream

3.字符流结构图

字节流和字符流的结构小解

4.字符流类的讲解

为什么要使用字符流?

因为字节流读取文字文件的时候可能会出现乱码的现象。因为对于一个文字来说如果使用UTF-8格式编码的时候占三个字节 ,使用JBK‘编码的时候占用两个字节’

InputStreamReader

是从字节流到字符流的桥梁
他读取字节并使用指定的编码将其解码为字符
构造方法:

InputStreamReader(InputStream inputStr)
使用默认的解码方式吧字节解码为字符(默认方式是utf-8)
参数是一个字节输入流的抽象类,所以我们在创建InputStreamReader
对象的时候要先创建一个字节输入流对象的具体类 比如FileInputStream

InputStreamReader(InputStream inputStr,String charsetName)
使用指定的解码方式吧字节解码为字符(比如utf-8 , gbk等)
参数是一个字节输入流的抽象类,所以我们在创建InputStreamReader
对象的时候要先创建一个字节输入流对象的具体类 比如FileInputStream

FileReader

字符输入流的便捷类
构造方法:
FileReader(String fileParh)
创建对象比较简单,而且直接就可以
调用reade方法进行读取
主要是用起来比较方便

BufferReader

自符缓冲输出入流
构造方法:
BufferReader(Reader reader);
Reader是祖宗抽象类,我们要使用Reader的
具体实现类:比如 FileReader();

OutputStreamReader

是从字符流到字节流的桥梁
他获得字符并使用指定的编码将其编码为字节
构造方法:

OutputStreamReader(OutputStream inputStr)
使用默认的编码方式吧字节编码为字符(默认方式是utf-8)
参数是一个字节输出流的抽象类,所以我们在创建OutputStreamReader
对象的时候要先创建一个字节输出流对象的具体类 比如FileOutputStream

OutputStreamReader(OutputStream inputStr,String charsetName)
使用指定的编码方式吧字节编码为字符(比如utf-8 , gbk等)
参数是一个字节输出流的抽象类,所以我们在创建InputStreamReader
对象的时候要先创建一个字节输出流对象的具体类 比如FileInputStream

FileWriter

字符输出流的便捷类
构造方法:
FileWrter (String fileParh)
创建对象比较简单,而且直接就可以
调用write方法进行数据写入
主要是用起来比较方便

BufferWriter

自符缓冲输出入流
构造方法:
BufferWriter(Writer writer);
参数Wruier是祖宗抽象类,我们要使用Writer的
具体实现类:比如 FileWriter();

上一篇:转换流:InputStreamReader、OutputStreamWriter


下一篇:MySQL SHA256和Java MessageDigest SHA-256不匹配