zoukankan      html  css  js  c++  java
  • 第十周课程总结

    一、流的概念
    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

  • 相关阅读:
    ZD ZDC数据类型 sort
    常识
    面试
    无锡
    sqlldr return code
    025:为什么需要将Logger对象声明为private static final类型的
    中级职称
    《宪法》关于全国人民代表大会的规定
    python打包成exe
    请问.AE和PR有什么区别?
  • 原文地址:https://www.cnblogs.com/George-/p/11788951.html
Copyright © 2011-2022 走看看