zoukankan      html  css  js  c++  java
  • 字节流还是字符流

    以下说的流都是文件流。

    字节流和字符流的区别

    文件在磁盘上的存储是按二进制存储的,也即按字节存储的。
    所以字节流就是相当于一个管道连通了应用程序和磁盘上的文件,每次读取都是以字节为单位。
    而字符流虽然也相当于一个管道连通了应用程序和磁盘上的文件,但是该管道自带过滤效果,即根据编码,将字节组装成不同的字符。
    为什么需要过滤呢,因为你存的时候是根据编码存的,所以读的时候自然也要根据编码读呗。

    何时使用字节流字符流

    如果你所要读的文件是与编码无关的,比如图像啊,视频啊, 那么就用字节流。 或者虽然你要读的文件与编码有关,但是你读的目的既不是为了显示,又不是为了使用其中的某个字符,而是为了拷贝复制,那么也是可以使用字节流的。
    那么什么时候使用字符流就很显然了, 你要读的文件与编码有关,且读的目的是为了显示或者得到其中的某个字符,那么当然使用字符流了。

    Java是如何识别有编码的文件的

    如果是输入流,创建InputStreamReader对象时,需要传入一个字节流和指定字符编码。InputStreamReader内部根据字节流和字符编码,生成StreamDecoder对象,该对象会根据字符编码将若干个字节解码为一个字符。
    如果是输出流,创建OutputStreamWriter对象时,需要传入一个字节流和指定字符编码。OutputStreamWriter内部根据字节流和字符编码,生成StreamEncoder对象,该对象会根据字符编码将一个字符编码成若干个字节。

  • 相关阅读:
    openstack命令行
    Hub, bridge, switch, router, gateway的区别
    openstack奠基篇:devstack (liberty)于centos 7安装
    git常用命令备忘
    如何利用gatling创建一个性能测试例
    如何通过源码生成Gatling可执行工具
    博客园的第一篇博文
    Spring Oauth2 with JWT Sample
    你首先是一个人,然后你才是程序员。
    Maven——快速入门手册(学习记录) ****
  • 原文地址:https://www.cnblogs.com/justPassBy/p/5340832.html
Copyright © 2011-2022 走看看