Java基础之IO总览

背景

IO在一般业务开发中不常用到,因此也是很久没有对这部分进行一次系统性的总结,最近有时间也是总结一下。

Java IO总览

Java IO这里指的传统IO,NIO会放到其他文章中介绍。在分类之前先了解一些概念。

流是一种对数据传递的抽象概念。比如,我们通过输入流读取磁盘上读取数据,就像水流一样连续源源不断流向用户态内存中。但是本质并非如此,至少不像水流那样源源不断,因为用户开发的程序运行在用户空间,而用户空间的进程是没有直接操作I/O设备的权限,需要内核进程帮忙操作I/O设备,用户空间进程会交出执行权,这个状态叫陷入内核,而用户空间的进程则表现为阻塞状态,等到需要读取的数据被内核进程准备好后,用户空间进程重新获得执行权,继续运行。

字节流

字节流和它的名字一样,是以字节的方式来操作文件的,这里的文件包括图片、视频、文本等,它的使用范围比字符流广泛,并且后面我们会介绍某些字符流如FilerReader也是建立在字节流上操作的,利用StreamDecoder按照编码方式将字节转换成字符,后面会详细介绍。字节流操作的byte。

字节流IO包中类继承关系如下
在这里插入图片描述

字符流

字符流操作的char

字符流IO包中类继承关系如下
在这里插入图片描述

输入流和输出流
  • 输入流:从文件读取到内存,只能进行读操作。
  • 输出流:从内存写入文件中,只能进行写操作。
节点流和处理流
  • 节点流:可以从或向一个特定的地方(节点)读写数据,说的有点抽象,把特定的地方理解为磁盘,内存或者其他设备就可以了。如FileReader
  • 处理流:可以对已存在的流进行连接和封装,如BufferedReader提供了一个缓冲区来操作已存在的输入字符流。
IO流的分类

从前文中两个流继承关系可以看到IO包中的继承关系非常复杂,要想靠这个继承关系搞清楚很难。我们要通过前文介绍的几个概念来对IO流作一个分类。

  • 按照操作方式分类,如图

    在这里插入图片描述

    各个流的简要说明:

    • FileInputStream:文件字节输入流,以字节方式读取
    • FileReader:文件字符输入流,以字符方式读取
    • FileOutputStream:文件字节输出流,以字节方式输出
    • FileWriter:文件字符输出流,以字符放松输出
    • CharArrayReader、StringReader:两种介质流,分别从char[]数组、String中读取数据
    • PipedReader、PipedWriter:分别代表管道字符输入流、输出流
    • BufferedReader、BufferedWriter:分别代表缓冲字符输入流、输出流
    • CharArrayWriter、StringWriter:写入char[]数组、写入String
    • BufferedInputStream、BufferedOutputStream:分别代表缓冲字节输入流、输出流
    • PipedInputStream、PipedOutputStream:分别代表管道字节输入流、输出流
    • ObjectInputStream、ObjectOutputStream:对象序列化输入流、输出流,属于处理流
    • DataInputStream、DataOutputStream:提供基础数据类型读取和写入操作
    • PrintStream、PrintWriter:打印流,是一种输出流

    通过上面的图可以看出,在很多操作都是成对出现的,比如File,就有FileReader、FileWriter、FileInputStream、FileOutPutStream。还有如Pipe、Array、Buffer。所以可以根据流的操作对象分类。

  • 按照流操作对象分类,如图,左边的是处理流,右边是节点流

在这里插入图片描述

这么多流看的眼花缭乱,可想java io的设计者花费的心血。在后续章节中将详细介绍各种流的使用。
文章首发地址:IkanのBolg

中北大学 课程设计任务书 2014-2015 学年第 二 学期 "学 院: "软件学院 " "专 业: "软件工程 " "学 生 班 级: " " "学 生 姓 名: " "学号: " " "设 计 题 目: " 某汽车美容店管理系统数据库设计 " "起 迄 日 期: "6月8 日 ~ 6月 19 日 " "设 计 地 点: "软件学院机房 " "指 导 教 师: " " 下达任务书日期: 2015 年6月8日 课 程 设 计 任 务 书 "1.设计目的: " "按照关系型数据库的基本原理,根据数据库设计方法,综合运用所学的知识 " ",设计开发一个小型的数据库- 某汽车美容店管理系统数据库。熟练掌握相 " "关数据库的分析、设计、实现过程,以及在此数据库基础之上对存储过程及 " "触发器的设计及实现方法。 " "2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): " " " "设计内容: " "某汽车美容店管理系统数据库包括以下功能:实现美容项目及价格信息管理 " "(录入、修改、删除等);实现客户信息、客户车辆信息管理;实现美容登 " "记和收费管理;创建存储过程,统计指定月份各种美容项目的美容次数;创 " "建存储过程,统计指定年份各客户的美容次数;创建存储过程,统计指定月 " "份美容店的收入情况;具有数据备份和数据恢复功能。 " "要求: " "数据库系统要根据设计内容和要求进行分析与设计,要考虑系统的完整性约 " "束,系统中的数据表设计应合理、高效,尽量减少数据冗余。(规范到3NF或" "BCNF " "3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、" "实物样品等〕: " " " "根据设计内容和要求进行需求分析,分析出系统的主要功能和设计重点。 " "根据需求分析的内容在小组中合理划分模块。 " "数据库实现正确,相关存储过程及触发器设计合理、正确,能实现预期功能 " "。 " "提交软件阶段文档齐全,思路正确。 " "按格式要求,每人根据自己的工作写出课程设计说明书。 " 课 程 设 计 任 务 书 "4.主要参考文献: " "王珊、萨师煊. 数据库系统概论(第五版). 北京:高等教育出版社. . " "闪四清. SQL Server 2008基础教程.北京:清华大学出版社. . " "潘永惠. 数据库系统设计与项目实践:基于SQL Server 2008. 北京:科学出 " "版社. . " "刘金岭,冯万利,周泓. 数据库系统及应用实验与课程设计指导:SQL Server" "2008/21世纪高等学校计算机教育实用规划教材. 北京:清华大学出版社. . " "5.设计成果形式及要求: " " " "课程设计说明书 " "数据库、存储过程、触发器 " "6.工作计划及进度: " " " " " "2015年 " "需求分析 " "概念结构和逻辑结构设计 " "数据库实现 " "撰写课程设计说明书 " "验收答辩、成绩考核 " " " ----------------------- 数据库课程设计任务书-某汽车美容店管理系统数据库设计全文共3页,当前为第1页。 数据库课程设计任务书-某汽车美容店管理系统数据库设计全文共3页,当前为第2页。 数据库课程设计任务书-某汽车美容店管理系统数据库设计全文共3页,当前为第3页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值