这两天学习了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流的总结,只是一个大概,具体的操作没有,后面会加进来,望斧正!

IO流详解(半教材类型)的更多相关文章

  1. 基于JavaSE阶段的IO流详解

    1.IO流基本概述 在Java语言中定义了许多针对不同的传输方式,最基本的就是输入输出流(俗称IO流),IO流是属于java.io包下的内容,在JavaSE阶段主要学下图所示的: 其中从图中可知,所有 ...

  2. IO流详解

    目录 IO流 IO流概述及其分类 IO概念 流按流向分为两种: 流按操作类型分为两种: 常用的IO流类 字节流的抽象父类: 字符流的抽象父类: InputStream & FileInputS ...

  3. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  4. java之IO流详解(一)

    IO流的分类: A:流向 输入流 读取数据 输出流 写出数据 B:数据类型 字节流 字节输入流  InputStream 字节输出流  OutputStream 字符流 字符输入流  Reader 字 ...

  5. Java io流详解二

    原文地址https://www.cnblogs.com/xll1025/p/6418766.html 一.IO流概述 概述: IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间 ...

  6. Java IO流详解(五)——缓冲流

    缓冲流也叫高效流,是处理流的一种,即是作用在流上的流.其目的就是加快读取和写入数据的速度. 缓冲流本身并没有IO功能,只是在别的流上加上缓冲效果从而提高了效率.当对文件或其他目标频繁读写或操作效率低, ...

  7. Java IO流详解(三)——字节流InputStream和OutPutStream

    我们都知道在计算机中,无论是文本.图片.音频还是视频,所有的文件都是以二进制(字节)形式存在的,IO流中针对字节的输入输出提供了一系列的流,统称为字节流.字节流是程序中最常用的流.在JDK中,提供了两 ...

  8. Java IO流详解(一)——简单介绍

    文件在程序中是以流的形式来传输的.所以用Java来传输文件就得使用到Java IO流. 1.流的概念和作用 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象<Thinkin ...

  9. Java之IO流详解

    IO流 Input/Output 完成输入/输出 应用程序运行时——数据在内存中  ←→ 把数据写入硬盘(磁带)  内存中的数据不可持久保存的  输入:从外部存储器(硬盘.磁带.U盘)把数据读入内存. ...

随机推荐

  1. 关于七牛云存储,HTTPS资源上传不成功问题

    关于七牛云存储,HTTPS资源上传不成功问题 官方给出了一个解决方案,亲测可用.特此记录一下. 找到QNConfiguration.m文件.然后重写两个方法,直接上代码. + (instancetyp ...

  2. React Native学习笔记-1:JSC profiler is not supported.(转载)

    运行react-native中Example下的UIEXPLORER Project 遇到虾面报错: 2016-03-21 14:12:18.941 [trace][tid:com.facebook. ...

  3. iOS动画详解(一)

    Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的绘图.变换.颜色管理.脱屏渲 ...

  4. cocos2d-x Animation

    转自:http://codingnow.cn/cocos2d-x/810.html 这一篇来学习怎么使用cocos2d-x引擎播放帧动画,就是把一帧一帧的图片像电影那样显示出来.1. 首先来了解一下相 ...

  5. 安装Intel HAXM为Android 模拟器加速,30秒内启动完成

    要求 必备知识 windows 7 基本操作. 运行环境 windows 7(64位); Android Studio 1.1.0;JDK 1.7.0_75(64位);android-sdk_r24 ...

  6. SVN安装笔记

    1.先去以下网址去下载服务器端与客户端的SVN 2.服务端SVN的安装 点击next 点击next 再点击next 点击next 点击install 点击Finish,这样服务器端的SVN就安装好了, ...

  7. c# label的内容显示不全

    c# label的内容显示不全.须要设置例如以下属性就可以: 1.将Lable的font属性的字体改成宋体: 2.将AutoSize属性改成true: 然后内容就能够显示所有了.

  8. iOS开发——数据持久化Swift篇&SettingBundle

    SettingBundle import UIKit class ViewController: UIViewController { var userDefault = NSUserDefaults ...

  9. wcf-1

    1.WCF是什么? WindowsCommunication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由.NET Framework 3. ...

  10. IntelliTrace 调试、定位异常

    最近看了一个开源数据库管理,然后没有认真看它的配置环境,想看看是什么东西, 然后发现有类型转换的错误,但是一下子也定位不到哪里出错? 所以对于这种一下子找不到异常在哪里的,可以使用intellitra ...