美文网首页java复习
2020-07-03字符流

2020-07-03字符流

作者: 智障猿 | 来源:发表于2020-07-04 15:11 被阅读0次
  • 为什么会出现字符流?
    由于字节流操作中文不是特别的方便,所以Java就提供了字符流(字符流 = 字节流+编码表)
  • 用字节流复制文本文件时,文本文件也有中文,但是没有问题,原因是最终底层会自动进行字节拼接成中文(汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数)

字符串中的编码解码问题

  • 编码:
    ①byte[] getBytes();使用平台默认字符集将string编码为一系列字节,将结果存储到新的字节数组中。
    ②byte[] getBytes(String charsetName):使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中。
  • 解码:
    ①String(byte[] bytes):使用平台默认的字符集解码指定的字节数组来构造新的String。
    ②String(byte[] bytes,String charsetName):使用指定的字符集解码指定的字节数组来构造新的String。

字符流中编码解码的问题

  • 字符流抽象基类
    ①Reader:字符输入流的抽象类
    ②Writer:字符输出流的抽象类
  • 字符流中和编码解码问题相关的两个类
    ①InputStreamReader:是从字节流到字符流的桥梁,它读取字节,并使用指定的编码将其解码为字符。它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
    ②OutputStreamWriter:是从字节流到字符流的桥梁,使用指定的编码将写入的字符编码为字节,它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集
  • InputStreamReader构造方法
构造方法 说明
InputStreamReader(InputStream in) 创建一个使用默认字符集的inputStreamReader
inputStreamReader(InputStream in,String charsetName) 创建一个使用命名字符集的InputStreamReader
  • OutputStreamWriter构造方法
构造方法 说明
OutputStreamWriter(OutputStream in) 创建一个使用默认字符集的OutputStreamWriter
OutputStreamWriter(OutputStream in,String charsetName) 创建一个使用命名字符集的OutputStreamWriter

字符流写数据的5种方式

方法名 说明
void write(int c) 写一个字符
void write(char[] chuf) 写入一个字符数组
void write(char[] chuf,int off,int len) 写入字符数组的一部分
void write(String str) 写一个字符串
void write(String str,int off,int len) 写一个字符串的一部分
  • flush与close方法
方法名 说明
flush() 刷新流,还可以继续写数据
close() 关闭流,释放资源,但是在关闭之前会先刷新流,一旦关闭,就不能再写数据了

字符流读数据的2种方式

方法名 说明
int read() 一次读一个字符数据
int read(char[] chuf) 一次读一个字符数组的数据

FileReader与FileWriter(InputStreamReader和OutputStreamWriter的子类)

由于InputStreamReader和OutputStreamWriter使用起来名字太长,且构造方法还要创建一个FileInputStream和FileOutputStream对象,不够方便,所以使用FileReader和FileWriter,但是想要设置编码解码时,还是使用InputStreamReader和OutputStreamWriter

构造方法 说明
FileReader(String fileName) 等价于InputStreamReader(new FileInputStream(String filename))
FileWriter(String fileName) 等价于OutputStreamReader(new FileOutputStream(String filename))

相关文章

  • 2020-07-03字符流

    为什么会出现字符流?由于字节流操作中文不是特别的方便,所以Java就提供了字符流(字符流 = 字节流+编码表) 用...

  • Java基础笔记21

    21.01_IO流(字符流FileReader) 1.字符流是什么字符流是可以直接读写字符的IO流字符流读取字符,...

  • Java IO流之字符流

    ①IO流(字符流FileReader) 1.字符流是什么字符流是可以直接读写字符的IO流字符流读取字符, 就要先读...

  • IO(字符流)&字符流其他内容&递归

    day21(IO(字符流)&字符流其他内容&递归) 1_IO流(字符流FileReader) 1.字符流是什么字符...

  • day21-Java IO流(字符流/装饰设计模式)

    21.01_字符流FileReader 1.字符流是什么字符流是可以直接读写字符的IO流字符流读取字符, 就要先读...

  • Topic21(字符流)

    21.01 字符流FileReader 字符流是什么字符流是可以直接读写字符的IO流字符流读取字符,就要先读取到字...

  • I/O的学习之字符流

    I/O的学习之字符流 今天的学习内容 字符流FileReader 字符流FileWriter 字符流的拷贝 带缓冲...

  • 2020-06-30【字符流】

    字节缓冲流 字符流 编码表 字符流写数据的5中方式 字符流读取数据的2种方式 练习 字符缓冲流 IO流小结

  • Java基础笔记总结(14)-IO流(2)字符流 FileRea

    字符流是什么 字符流是可以读写字符的IO流 字符流读取字符,先要读取字节数据,然后转换为字符,需要把字符转换为字节...

  • IO Stream - 字符流

    字符流 字符流出现的原因1.字符流介绍:由于字节流操作中文不是特别方便,所以Java提供了字符流字符流 = 字节流...

网友评论

    本文标题:2020-07-03字符流

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