I/O流是用于处理设备之前信息传输的流,在我们今后的学习甚至是工作中,都是十分重要的。

在我们的日常生活中,也是很常见的,譬如:文件内容的合并、设备之键的文件传输,甚至是下载软件时的断点续传,都可以用I/O流的知识来实现。

那么,话不多说,现在本人就开始讲解吧:


@


在讲解I/O流之前,本人要先来讲解下另外两个相关知识点 —— 异常File类

那么,可能有的同学有疑问了—— 讲解IO流之前为什么先讲解异常和File类呢?

答曰:原因有两点:

  1. File类是I/O流将来需要操作的文件,所以我们需要学习 File类;
  2. 在操作文件的过程中,可能会出现问题,我们需要对相应的代码进行处理,所以我们需要学习 异常。

那么,本人就通过两篇博文先来介绍下 异常 以及 File类:

异常:

请观看本人博文——《详解 异常》


File类:

请观看本人博文——《详解 File类》


I/O流:

概述

又称“输入输出流

用于处理 设备之间的数据传输(即: 上传文件和下载文件

I/O流主要分为两大类:

分类

  1. 按照流向分:
  • 输入流—— 用于 读入数据

    (InputStream)
  • 输出流—— 用于 写出数据

    (OutputStream)

在这里本人要对上面的输入和输出做一点说明

说明:

这里的输入和输出都是针对内存而言

如下图所示:

  1. 按照操作数据的类型分
  • 字节流 —— 可以读写任意类型的文件
  • 字符流 —— 只能读写文本文件

    (字符流相当于包装了字节流,在读取文本文件时会更高效些)

在讲解所有流之前,本人要着重强调一个问题:

流用完之后,必须释放资源!!!(即:close()掉)


那么,现在,本人来讲解下I/O流的继承体系

I/O流的继承体系:

首先是 字节流

请观看本人博文 —— 《详解 字节流》

然后是 字符流

请观看本人博文 —— 《详解 字符流》

现在,本人来讲解下将要处理的信息存储在内存中的流 —— 内存操作流

请观看本人博文 ——《详解 内存操作流》

那么,本人再来讲解下 字节流 与 字符流 的共有子流 —— 打印流

请观看本人博文 ——《详解 打印流》

现在,本人再来讲解下一个很重要的流 —— 随机访问流

请观看本人博文 —— 《详解 随机访问流》

现在,本人再来讲解下一个很特殊的流 —— 序列化流 与 反序列化流

请观看本人博文 ——《详解 序列化流 与 反序列化流》

现在,本人来介绍一个 用于存储流信息的容器类 —— Properties类

请观看本人博文 ——《详解 Properties类》


其实,I/O流的子流还有很多,本人就通过讲解以上几个来展示下我们最经常用的几种。

通过本人的讲解,我们能够发现:

这些流中最基本的就是“字节流”,

也因此它使用起来比较麻烦,但是比较灵活,功能齐全。

其它的流基本上都是(除个别外,例:随机访问流)包装过的字节流,

也因此,这些流侧重点强,效率高,但是可能会丧失一些功能。

详解 I/O流的更多相关文章

  1. 2020你还不会Java8新特性?方法引用详解及Stream 流介绍和操作方式详解(三)

    方法引用详解 方法引用: method reference 方法引用实际上是Lambda表达式的一种语法糖 我们可以将方法引用看作是一个「函数指针」,function pointer 方法引用共分为4 ...

  2. 详解API Gateway流控实现,揭开ROMA平台高性能秒级流控的技术细节

    摘要:ROMA平台的核心系统ROMA Connect源自华为流程IT的集成平台,在华为内部有超过15年的企业业务集成经验. 本文分享自华为云社区<ROMA集成关键技术(1)-API流控技术详解& ...

  3. tomcat使用详解(week4_day2)--技术流ken

    tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...

  4. Linux 网络编程详解四(流协议与粘包)

    TCP/IP协议是一种流协议,流协议是字节流,只有开始和结束,包与包之间没有边界,所以容易产生粘包,但是不会丢包. UDP/IP协议是数据报,有边界,不存在粘包,但是可能丢包. 产生粘包问题的原因 . ...

  5. Java IO详解(二)------流的分类

    一.根据流向分为输入流和输出流: 注意输入流和输出流是相对于程序而言的. 输出:把程序(内存)中的内容输出到磁盘.光盘等存储设备中      输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内 ...

  6. 【java】详解I/O流

    目录结构: contents structure [+] File类 I/O流体系 流的基本介绍 访问文件 转化流 DataInputStream和DataOutputStream 对象流 推回输入流 ...

  7. UX术语详解:任务流,用户流,流程图以及其它全新术语

    以下内容由Mockplus(摹客)团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 用户体验拥有一长串专业的术语和可交付内容.当在线查看UX相关职位描述时,所罗列的这类术语更是 ...

  8. 面试题:JavaIO流分类详解与常用流用法实例

    Java流概念: Java把所有的有序数据都抽象成流模型,简化了输入输出,理解了流模型就理解了Java IO.可以把流想象成水流,里面的水滴有序的朝某一方向流动.水滴就是数据,且代表着最小的数据流动单 ...

  9. vim编辑器详解(week1_day3)--技术流ken

    vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 v ...

随机推荐

  1. laravel如何实现多用户体系登录

    laraveli添加一个或多个用户表,以admin为例. 部分文件内容可能需要根据实际情况修改 创建一个Admin模型 php artisan make:model Admin -m 编写admins ...

  2. 改变Dataframe的列的数据类型

    1.查看DataFrame的数据类型 df.dtypes#查看各列数据类型 df[A].dtypes#查看A列数据类型 2.转换DataFrame的数据类型 df[A].astypes(int)#将A ...

  3. Android 文本TextView底部对齐实现

    前言 想要实现主体文字突出显示,前面是数值加粗,后面是单位符号,且底部对齐数值显示的效果:但是不同TextView字体大小排版后总是有些差别,无法底部对齐.百度一番后有重写TextView的,还有其它 ...

  4. 搜索引擎如何检索结果:Python和spaCy信息提取简介

    概览 像Google这样的搜索引擎如何理解我们的查询并提供相关结果? 了解信息提取的概念 我们将使用流行的spaCy库在Python中进行信息提取 介绍 作为一个数据科学家,在日常工作中,我严重依赖搜 ...

  5. Mayor's posters POJ - 2528 线段树(离散化处理大数?)

    题意:输入t组数据,输入n代表有n块广告牌,按照顺序贴上去,输入左边和右边到达的地方,问贴完以后还有多少块广告牌可以看到(因为有的被完全覆盖了). 思路:很明显就是线段树更改区间,不过这个区间的跨度有 ...

  6. 【SQL SERVER】索引

    在做开发过程中经常会接触数据库索引,不只是DBA才需要知道索引知识,了解索引可以让我们写出更高质量代码. 索引概述 聚集索引 非聚集索引 唯一索引 筛选索引 非聚集索引包含列 索引概述 索引的存在主要 ...

  7. Python实现压缩解压缩,移动复制copy文件

    import shutil import os from shutil import make_archive # 查看可压缩的文件类型 print(shutil.get_archive_format ...

  8. sql 模块 pymysql 数据库操作

    1. 添加一个部门. import pymysql def main(): no = int(input('编号: ')) name = input('名字: ') loc = input('所在地: ...

  9. tkinter gui控件回调和grid布局优化

    0.引子 Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序.由于 Tkinter 是内置到 python 的安装包中.只要安装 ...

  10. 从 Socket 编程谈谈 IO 模型(三)

    快过年啦,估计很多朋友已在摸鱼的路上.而我为了兄弟们年后的追逐,却在苦苦寻觅.规划,导致文章更新晚了些,各位猿粉谅解. 上期分享,我们结合新春送祝福的场景,通过一坨坨的代码让 BIO.NIO 编程过程 ...