• 第十周课程总结


    一、流的概念
    1.1、程序中所有的数据都是以流的方式进行传输或保存的
    1.2、程序需要读取数据的时候要使用输入流读取数据,而当程序需要将一些数据保存(写)到磁盘的时候,就要使用输出流完成。
    1.3、切记:程序是内,文件...是外
    二、流的超类
    2.1、字节流的超类:InputStream、OutputStream
    作用:处理字节、二进制对象。(其实可用于任何类型的对象,但它不能直接处理Unicode字符)
    操作对象:字节流处理单元为1个字节,操作字节和字节数组
    2.2、字符流的超类: Reader、Writer
    作用: 直接处理字符、字符串。
    操作对象:处理的单元为2个字节的Unicode字符
    拓展:字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的
    2.3、用途推荐
    音频文件、图片、歌曲,就用字节流好点
    关系到中文(文本)的,用字符流好点
    2.4、前言:
    其实前言放在这里,笔者认为是不合适的,之前的铺垫只是方便读者快读进入状态

    字节流和字符流的关系:
    字节流不足:实际开发中很多的数据是文本,字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,于是提出了字符流的概念。
    字符流的诞生:字符流按虚拟机的encode处理,也就是通过InputStreamReader,OutputStreamWriter进行字符集的转化
    转化(注:初学者可以不看该转化知识,如果想了解原理,该段是有帮助的):
    InputStreamReader:用于将一个字节流中的字节解码成字符,其构造函数
    InputStreamReader isr = new InputStreamReader(InputStream in)的参数是一个InputStream对象 / System.in,用 对象.read(char[] data),的方式获取内容
    OutputStreamWriter:用于将写入的字符编码成字节后写入一个字节流,其构造函数(之一)
    OutputStreamWriter osw = new OutputStreamWriter(OutputStream out)是一个OutputStream对象,通常用对象.write(String str)的方式写到 对象绑定的输出流上。
    二者都是处理流(包装流、非结点流)---不可直接操作数据!。由上可知二者底层分别是通过byte[]和String来关联它们对应的流对象!
    三、字节流与字符流的区别
    3.1、操作文件时的区别:
    字节流:在操作时不会用到缓冲区(内存),是直接对文件本身进行操作的
    字符流:在操作时则使用了缓冲区,通过缓冲区再操作文件。
    3.2、存在形式区别:
    在硬盘上的所有文件都是以字节形式存在的(图片,声音,视频),而字符值在内存中才会形成
    注:https://segmentfault.com/a/1190000019840875

  • 相关阅读:
    GeoServer开发手册
    如何自行分析定位SAP BSP错误
    SAP CRM里的user parameter之COM_IOITF_DEBUG
    SAP One Order应用的跟踪工具CRMD_TRACE_SET
    明明没有发生超时错误,为什么SAP WebClient UI会显示超时错误提示?
    使用ABAP SE16查看类型为RAWSTRING的数据库列字段值
    SAP CRM附件模型和搜索相关的属性介绍
    SAP WebClient UI和business switch相关的逻辑介绍
    SAP WebClient UI页面标签的决定逻辑介绍
    SAP WebClient UI配置决定(configuration)的逻辑介绍
  • 原文地址:https://www.cnblogs.com/George-/p/11788951.html
Copyright © 2020-2023  润新知