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

    以下说的流都是文件流。

    字节流和字符流的区别

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

    何时使用字节流字符流

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

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

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

  • 相关阅读:
    ASP.NET Web API 2 之文件下载
    Windows 查看某个端口号是否被占用
    C# 数据类型之 String(字符串)
    数据表对应关系(一对一、一对多、多对多)
    嫁给程序员的好处,你get到了吗?
    ASP.NET Web API 2 之 HttpRequestMessage 对象
    C# 使用 log4net 记录日志
    Chrome 浏览器快捷键
    C# 获取程序运行时路径
    SpringBoot整合Pagehelper分页插件
  • 原文地址:https://www.cnblogs.com/justPassBy/p/5340832.html
Copyright © 2011-2022 走看看