• IO流详解(半教材类型)


      这两天学习了IO流,整理了一些理论知识点,仅供参考。

            java流概述
    一 流
      从操作系统层面和文件系统,数据保存相关的是所有语言都具备的一个基本功能,java专门开发了一个包:java.io.*;java流是Sun/oracle公司专门为文件操作,数据传输开发出来的一些类,但是取了个特别的名字,叫流(继承于unix->Linux),只要记住他们就是一些类就可以了没什么特别的;所有的打开的流都必须关闭,因为打开的流是很耗费资源的,并且很不安全;
      流中的操作对象是指内存中当前操作的程序而言的,输入是指往程序中导入数据,输出是当前程序中的数据导出到外部,这个外部是指:内存中别的程序,内存中的缓存,硬盘,U盘,远程连接等,但是我们不管这些细节,直接导出就可以,由java底层处理
      I:input:什么叫input输入流
        这个是以当前内存中运行那一段程序为标准,从外部写入的数据叫输入
      O:output:什么叫output输出流:往外部写出的数据叫输出

    二 流类架构图(常用的十六个流)
      所有的的类都继承Closeable接口,用于关闭流;
      Closeable:意思是需要程序员去手动关闭的程序
      所有的输出流在继承Closeable的同时,也都继承了Flushable,用于将缓存的数据强行刷入文件

      接口
      Closeable,Flushable

      基础实现类,原始类,打开连接,读取数据
      FileInputStream
      FileOutputStream
      FileReader
      FileWriter
      包装流,在原始的基础上进行强化
      缓存,以加快速度,多次读,一次写,为什么?硬盘等物理设备,读比写要快.同时因为一次只能读8-16bit,所以我们开辟个缓冲区,读一片,然后一次写入
      BufferedReader
      BufferedWriter
      BufferedInputStream
      BufferedOutputStream
      
      数据来源于内存
      DataInputStream
      DataOutputStream

      序列化
      ObjectInputStream
      ObjectOutputStream

      转换类:讲字节流转换成字符流
      InputStreamReader
      OutputStreamWriter

      格式化输出:要对数据输出前进行排版
      PrintWriter
      PrintStream //标准输出类,默认把数据输出到控制台

      java中的流类全部都可以划分成这四个类:
      InputStream,OutputStream:字节流

      Reader,Writer:字符流


      
    三 类的分类
      原始流类:用于打开连接,里面不能传入一个流,而是一个具体的数据定位,是直接操作数据的,
      四个原始流类:
      FileInputStream
      FileOutputStream
      FileReader
      FileWriter

      别的都是包装流

      包装类(包裹类):在连接基础上进行操作,里面传入是一个流类,也就是一个类,对象,要用到多态,就是包装流,包装流不能独立存在,对原始流进行在加工处理的

      用PowerDesigner写的每个流及与接口的关系

    最后用Xmind总结一下:

    以上就是我对IO流的总结,只是一个大概,具体的操作没有,后面会加进来,望斧正!

  • 相关阅读:
    ASP.NET Core路由中间件[4]: EndpointRoutingMiddleware和EndpointMiddleware
    ASP.NET Core路由中间件[3]: 终结点(Endpoint)
    ASP.NET Core路由中间件[2]: 路由模式
    ASP.NET Core路由中间件[1]: 终结点与URL的映射
    [LeetCode] 994. Rotting Oranges 腐烂的橘子
    [LeetCode] 993. Cousins in Binary Tree 二叉树的表兄弟节点
    [LeetCode] 992. Subarrays with K Different Integers 有K个不同整数的子数组
    [LeetCode] 991. Broken Calculator 损坏的计算器
    [LeetCode] 1143. Longest Common Subsequence 最长公共子序列
    [LeetCode] 990. Satisfiability of Equality Equations 等式方程的可满足性
  • 原文地址:https://www.cnblogs.com/wing411/p/4794010.html
Copyright © 2020-2023  润新知