zoukankan      html  css  js  c++  java
  • 二、IO流


    1.概念
    在工作中,会经常去操作磁盘上的一些资源,实现数据的输入和输出操作,磁盘上的资源和内存之间进行交互,资源的交互需要有一个数据流通的管道或者媒介,把这个管道或者媒介就称为IO流【Input Output】,也称为输入输出流

    2.流的分类
    1>按照流的流向分
    输入流:只能读取数据,不能写入数据【从磁盘到内存】
    输出流:只能写入数据,不能读取数据【从内存到磁盘】

    2>按照处理数据单位分
    字节流:byte 最小的单位为8位的字节 1个字节
    字符流:char 最小的单位为16位的字符

    3>按照层次分(了解)
    节点流:直接使用一个已经存在的流进行读写的操作,低级流
    处理流:对一个已经存在的流进行封装,通过封装后的流进行读写操作,高级流

    3.字符字节流(文件流)
    a.字符流 Reader Writer
    b.字节流:InputStream OutputStream

    c.输入流:Reader【字符输入流】,InputStream【字节输入流】
    d.输出流:Writer【字符输出流】,OutputStream【字节输出流】

    说明:Reader Writer InputStream OutputStream是所有输入输出流的父类,他们都是抽象类,本身不能实例化对象来执行输入输出,所以只能使用他们的子类创建对象,但是他们的使用将作为所有流使用的模板,他们的方法可以在所有的流中使用


    1>文件流
    FileReader--->InputStreamReader---->Reader
    FileInputStream--->InputStream

    FileWriter--->OutputStreamWriter--->Writer
    FileOutputStream---->OutputStream

    总结:
    a.如果操作的是具有特殊格式的文件【图片、视频。音频。压缩包等在计算机中都是以字节的形式存在的】只能使用字节流
    b.如果操作的是文本,字节流和字符流都可以使用
    c.当完成流的读写操作之后,一定要进行流的关闭,避免造成资源的浪费


    2>转换流
    作用:实现了将字节流转换为字符流
    a.InputStreamReader:【字节字符转换输入流】,将字节输入流转化为字符输入流
    b.OutputStreamWriter:【字节字符转换输出流】,将字节输出流转换为字符输出流


    问题一:为什么没有将字符流转换为字节流的转换流?
    a.字节流比字符流的使用范围更广,但是字符流比字节流使用方便
    b.可以解决字符集乱码的问题

    问题二:什么时候使用转换流?
    如果需要处理具有除了GBK格式之外的文本时,使用转换流

    总结:
    a.转换流的最大的作用主要是为了解决字符集乱码的问题【中文】
    b.只有转换流才能指定读取和写入的字符集


    扩展:字符集
    ASCII:美国标准信息交换码
    ISO8859-1:拉丁码表,比ASCII更全面
    GBK:中国【占用两个字节】
    Unicode:国际【融合了多种文字】
    UTF-8:最多使用三个字节表示一个字符

    常用:ISO8859-1,GBK,UTF-8

  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/lsp-lsp/p/7344136.html
Copyright © 2011-2022 走看看