你的位置:首页 > Java教程

[Java教程]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流的总结,只是一个大概,具体的操作没有,后面会加进来,望斧正!