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

  • 相关阅读:
    调用外部文件(ShellExecute)
    字体函数 -- GetDeviceCaps
    字体函数 -- EnumFonts
    字体函数 -- EnumFontFamilies
    回调函数 EnumFontFamProc
    AlphaBlend
    c# 编程修改 wince 系统时间
    windows 打开文件夹
    C# wince 实现软件忙鼠标状态改变
    CSDN第一期总结之三:Thread的问题(转)
  • 原文地址:https://www.cnblogs.com/lsp-lsp/p/7344136.html
Copyright © 2011-2022 走看看