Java字符编码和字符和字节流

一:java的IO流

  • Java中的I/O(输入/输出)流是用于处理数据输入输出的抽象类。
  • Java I/O流主要分为两大类:字节流(Byte Streams)和字符流(Character Streams)。
    • 字节流:用于处理二进制数据,包括InputStream和OutputStream两个主要类及其子类。
    • 字符流:用于处理文本数据,包括Reader和Writer两个主要类及其子类。

二:字节和字符流区别

2.1处理的数据类型

  • 字节流
    • 处理的是字节数据,即8位二进制数据,在计算机中,所有的文件都能以二进制(字节)形式存在。
    • Java的I/O中针对字节传输操作提供了一系列流,统称为字节流。
    • 这些流包括两个抽象基类InputStream和OutputStream,分别处理字节流的输入和输出
  • 字符流
    • 处理的是字符数据,即Unicode字符,通常是16位二进制数据。
    • 字符流是16位unicode字符流,主要用于处理字符文本文件
    • 由于Java中字符是采用Unicode标准,因此字符流在处理文本数据时具有更高的效率和准确性。

2.2编码问题

  • 字节流
    • 因为直接操作的是字节,没有编码问题,字节流可以处理任意类型的数据,包括文本、图片、音频等。
    • 当使用字节流处理文本文件时,需要自行处理编码问题,否则可能会出现乱码
  • 字符流
    • Java使用Unicode编码来表示字符,而外部数据源可能使用不同的编码方式。
    • 字符流在读取或写入文本文件时,会自动进行字符编码的转换,使用字符流处理文本文件时通常不需要担心编码问题。

2.3使用场景

  • 字节流:

    • 字节流以字节(8bit)为单位,适合处理图片、视频、音频等二进制文件,以及网络传输等场景。
    • 由于字节流直接操作字节数据,因此具有更高的灵活性和效率
  • 字符流:

    • 字符流以字符为单位,根据码表映射字符,一次可能读多个字节,适合处理文本文件、文本数据等场景。
    • 字符流在处理文本数据时具有更高的效率和准确性,因为字符流会自动处理字符编码的转换

三:IO流相关类体系概览

功能不同,但是具有共性内容,通过不断抽象形成4个抽象类,抽象类下面有很多子类是具体的实现

  • 字符流 Reader/Writer
  • 字节流 InputStream/OutputStream
    在这里插入图片描述
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值