IO体系与乱码

流的分类


按数据处理类型分 : 字节流,字符流
按数据流向分 : 输入流,输出流

这里写图片描述

共同点:都是抽象类,必须依赖子类去实现;

  1. 字节流:读到一个字节返回一个字节,所以可以处理所有类型的数据,eg:图片,MP3,视频文件,并且不会乱码;

    1.InputStream,字节输入流(byte);

    2.OutputStream,字节输出流(byte);

  2. 字符流:使用字节流读到一个或多个字节(中文,流默认是GBK编码,是俩位,文件默认是UTF-8编码,是3位)–>>这就是乱码的原因.先去查指定的编码表,查到后返回该字符;

    3.Reader,字符输入流,子类必须实现的方法write(),flush(),close();

    4.Writer,字符输出流,子类必须实现的方法read(),close();

必须关流,close(),如果不关流,东西只会写入缓存区,而不会写入磁盘,导致程序运行后,文件里没有任何内容(不信赌个棒棒糖:-D);

IO体系结构图


这里写图片描述

乱码问题


1.字符流才乱码;

2.字节流操作:读到一个字节返回一个字节,所以不会乱码;

3.字符流操作:使用字节流读到一个或多个字节(中文,流默认是GBK编码,是俩位,文件默认是UTF-8编码,是3位)–>>这就是乱码的原因.先去查指定的编码表,查到后返回该字符;

4.解决方案:指定编码解码过程使用的码表,默认是GBK,只有下面俩个可以指定编码,其他都选用默认编码GBK;

 InputStreamWriter(InputStream,String charSet); 
 OutputStreamwriter(OutputStream,String charSet);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值