天道酬勤,学无止境

Java之IO流的分类

Java中IO流(分类篇)

IO流从从大体上分为输入流(Input)输出流(Output)

怎么理解IO流呢?
io可以理解为一条条的管道,流就是管道中的数据。话不多说,上图:

在这里插入图片描述

IO流的分类:

①以流的方向来划分:

输出流:以内存为基准,把内存中的数据写入到磁盘文件或者网络介质中
输入流:以内存为基准,把磁盘文件或网络介质中的数据写入到内存中去

②以流的内容来划分:

字节流:流中的数据最小单位为一个一个的字节
字符流:流中的数据最小单位为一个一个的字符

IO流的分类以及常见的实现类

在这里插入图片描述
在我们初学IO流的时候一般需要先掌握8个实现类(图中有颜色的实现类),在后期我会更新每一个实现类的具体使用方法


补充: 所有的IO流的类都实现了Closeable接口

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Java 基础(四)| IO 流之使用文件流的正确姿势
    为跳槽面试做准备,今天开始进入 Java 基础的复习。希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆。一、什么是 IO 流?想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中。那这个看似简单的过程,背后其实是数据的传输。数据的传输,也就是数据的流动。既然是流动也就会有方向,有入方向和出方向。举个上传文件的栗子,现在有三个对象,文件、应用程序、上传的目标地址(服务器)。简化的上传文件有两步:应用程序读文件(此为入方向,文件读入到应用程序)应用程序写文件(此为出方向,读完之后写到目标地址)注意这个入和出是相对的,它相对于应用程序而言。如果相对于服务器而言,这个上传文件操作就是入方向,从应用程序读入。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。二、IO 流的分类我不认同网络上很多 IO 流的图,他们只是简单的把 io 流分成字节流和字符流。这样的分类也不是说不好,只是太臃肿、难记。先上一张我自己总结的 IO 留的思维导图,我先把它分成了节点流和处理流,节点流是直接接触数据源的,而处理流是出于各种目的在节点流的基础上再套一层的 IO 流。再按照操作类型,分成 8 个小类,然后才是字节、字符分类,最后才是输入、输出的分类
  • javaSE基础内容大纲
    java基础语法: 1. Java语言的发展史 2. JDK的下载和安装 3. DOS命令的介绍和使用 4. Path环境变量的配置 5. 第一个代码HelloWorld案例 6. NotePad++软件的安装和使用 7. Java中的数据类型 8. 常量的使用 9. 变量的定义与使用 10. Java中代码的书写规范 11. 数据类型之间的转换 12. Java中的各种运算符操作 13. if分支语句的灵活使用 14. switch分支语句 15. for循环结构 16. while循环结构 17. do..while循环结构 18. 各种循环语句的区别和应用场景 19. 循环跳转控制语句 20. 嵌套循环的应用 21. 使用循环嵌套打印直角三角形 22. IDEA开发软件 23. 数组的动态初始化 24. 数组的访问格式 25. 数组的静态初始化 26. Java的内存划分和作用 27. 分析数组在内存中的存储 28. 方法的定义和调用 29. 方法的参数和返回值问题 30. 方法的重载(Overload) 31. 参数是基本类型和引用类型的区别 32. Debug断点调试的使用 面向对象基础: 1. 类和对象的概述 2. 分析对象在内存中的存储 3. 成员变量和局部变量的区别 4.private关键字的应用 5. this关键字的应用 6. this关键字的内存原理 7
  • IO流超详细分类
    IO流超详细分类 Java 中 IO 流分为几种? 按照流的流向分,可以分为输入流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流的角色划分为节点流和处理流。 Java Io 流共涉及 40 多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。 InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。 按操作方式分类结构图 按操作对象分类结构图 既然有了字节流,为什么还要有字符流? 问题本质想问:不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么 I/O 流操作要分为字节流操作和字符流操作呢? 回答:字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以, I/O 流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话使用字符流比较好。 BIO,NIO,AIO 有什么区别? BIO (Blocking I/O): 同步阻塞 I/O 模式
  • java知识点总结,学习路线总结(非常详细)!
    学习地址:https://how2j.cnJava基础课程Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。第一部分:Java开发介绍1. DOS常用命令2. JVM、JRE、JDK之间的关系3. Java开发环境的搭建:安装JDK,配置环境变量4. Java入门程序(Java的开发流程)5. Java的注释,标识符、标识符的命名规范6. Java基本数据类型7. 变量和常量的定义及初始化8. Java的运算符9. 运算符的优先级10. Java分支语句之if...else11. 循环的嵌套12. 方法的定义13. 方法的形参和实参14. 方法的递归调用第二部分:Java数组1. Java 数组的定义2. Java 数组的声明3. 数组的优势与局限4. 数组的遍历访问(普通循环,增强for循环)5. 数组元素的顺序查找6. 数组元素的冒泡法排序7. Arrays工具类的使用8. 二维数组 第三部分:Java面向对象1. 面向对象设计思想2. 面向对象的分析与设计3. Java与面向对象4. 类中成员变量的定义与意义5. 构造方法的定义和调用6. 面向对象的封装特性7. 局部变量和成员变量的作用域问题8. 静态属性、静态方法、静态代码块9. 面向对象的继承特性10. 继承中构造方法的细节11
  • Java 学习路线
    文章目录 Java基础1 Java 基本功1.1 Java 入门(基础概念与常识)1.2 Java 语法1.3. 基本数据类型1.4. 方法(函数) 2. Java 面向对象2.1. 类和对象2.2. 面向对象三大特征2.3. 修饰符2.4. 接口和抽象类2.5. 其它重要知识点 3. Java 核心技术3.1. 集合3.2. 异常3.3. 多线程3.4. 文件与 I\O 流 Java基础 看书《Java 核心技术卷 1/2》+ 视频 + 做笔记 1 Java 基本功 1.1 Java 入门(基础概念与常识) 1.2 Java 语法 1.3. 基本数据类型 1.4. 方法(函数) 2. Java 面向对象 2.1. 类和对象 2.2. 面向对象三大特征 2.3. 修饰符 2.4. 接口和抽象类 2.5. 其它重要知识点 3. Java 核心技术 3.1. 集合 3.2. 异常 3.3. 多线程 3.4. 文件与 I\O 流 Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。 2 第一部分:Java开发介绍 DOS常用命令 JVM、JRE、JDK之间的关系 Java开发环境的搭建:安装JDK,配置环境变量 Java入门程序(Java的开发流程) Java的注释,标识符、标识符的命名规范 Java基本数据类型
  • 转载:Java学习路线(完整详细版)超详细
    Java学习路线 第一阶段:Java基础一.介绍二.Java开发介绍三.Java数组四.Java面向对象五.异常六.集合七.IO流八.多线程 第二阶段:JavaWeb一.介绍二.HTML5三.CSS3四.JavaScript五.MySQL或Oracle数据库的使用六.JDBC连接池七.Servlet八.JSP九.AJAX 第三阶段:Java框架一.介绍二.Spring三.Spring MVC四.MyBatis五.Svn和Git六.Maven七.项目实战演练 一门永不过时的编程语言——Java语言! Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位! Java工程师就业: 通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师北京Java开发工程师平均薪资,即16788元全国Java开发薪资前三:北京 上海 广州 本博客可作为: Java学习路线Java学习大纲 第一阶段:Java基础 一.介绍 Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。 二.Java开发介绍 第一部分
  • 2021年最新Java的学习路线来了~
    一门永不过时的编程语言——Java 软件开发,5G时代,万物互联,更多的终端会使用安卓系统,随之而来的Java开发必然是会越来越火爆,所以学习Java是必要且必须的,下边就是总结了下Java的学习路线~ 【需要java资料的私信我免费领取】 Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位! Java工程师就业: 1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师 2.北京Java开发工程师平均薪资,即16788元 3.全国Java开发薪资前三:北京 上海 广州 工具/原料 Java学习路线Java学习大纲 Java基础课程 1 Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。 第一部分:Java开发介绍 DOS常用命令 JVM、JRE、JDK之间的关系 Java开发环境的搭建:安装JDK,配置环境变量 Java入门程序(Java的开发流程) Java的注释,标识符、标识符的命名规范 Java基本数据类型 变量和常量的定义及初始化 Java的运算符 运算符的优先级
  • 2020Java学习路线(珍藏版)
    一门永不过时的编程语言——Java 软件开发,虽然我是做C/C++开发的,但是也是学习过并且之后肯定还要继续学习Java的,原因就是5G时代,万物互联,更多的终端会使用安卓系统,随之而来的Java开发必然是会越来越火爆,所以学习Java是必要且必须的,下边就是总结了下Java的学习路线 Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位! Java工程师就业: 1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师 2.北京Java开发工程师平均薪资,即16788元 3.全国Java开发薪资前三:北京 上海 广州 工具/原料 Java学习路线Java学习大纲 Java基础课程 1 Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。 2 第一部分:Java开发介绍 DOS常用命令 JVM、JRE、JDK之间的关系 Java开发环境的搭建:安装JDK,配置环境变量 Java入门程序(Java的开发流程) Java的注释,标识符、标识符的命名规范 Java基本数据类型
  • 2020最新版适合JAVA小白的学习线路(纯干货),你值得拥有
    一门永不过时的编程语言——Java 软件开发,你赞同吗? 我赞同。 我用数据说话 Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位! Java工程师就业: 1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师 2.北京Java开发工程师平均薪资,即16788元 3.全国Java开发薪资前三:北京 上海 广州 以上2个数据,你心动了,心动就赶快行动起来吧。5G时代,万物互联,更多的终端会使用安卓系统,随之而来的Java开发必然是会越来越火爆,所以学习Java是必要且必须的,下边就是总结了下Java的学习路线。 包括Java基础课程、JavaWeb和java框架课程。 你可能会好奇,你不是讲java学习路线吗?为啥还有前端web的部分,我只能告诉你, 我们可不能闭门造车,很多公司学后端还要学前端的 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的 当然,有些公司是不写的,例如: 俗话技多不压身,为了方便要写的小伙伴,咱还是一起介绍了~
  • JavaSE之IO流的使用详解
    1.1什么是IO 在Java中I/O操作主要是指用java.io包下的内容,进行输入和输出操作。输入也叫读取操作,输出也叫作写出数据。以内存为基准,分为输入input和输出output 1.2IO的分类 根据数据的流向分为:输入流和输出流 输入流:把数据从其他设备上读取到内存中的流。 输出流:把数据从内存中写到其他设备上的流。 根据数据的类型分为:字节流和字符流 字节流:以字节为单位,读写数据的流。 字符流:以字符为单位,读写数据的流。 输入流输出流字节流InputStream 字节输入流OutputStream<br/>字节输出流字符流Reader 字符输入流Writer 字符输出流以上类都是抽象类,我们平时使用的是各抽象类的子类。 2.1字节流 一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存。比如右击一个文档文件,再点击属性,就是显示出这个文件的字节大小。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。 字节输出流【OutputStream】抽象类 java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。 public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 public void flush(
  • java基础:11、java中IO流分为几种?IO流的分类
    文章目录 java中IO流分为几种?1、IO流概念2、IO流分类3、IO流具体分类按操作方式分类按操作对象分类 java中IO流分为几种? 1、IO流概念 流是从一端到另一端,连接了源头和目的地。 IO流可以理解为连接程序与文件/数组/网络连接/数据库。 2、IO流分类 (1)按流向分类: 输入流 输出流 (2)按处理数据不同分类: 字节流:二进制,可以处理一切文件,包括:纯文本、doc、音频、视频等。 字符流:文本文件,只能处理纯文本。 (3)按功能不同分类: 节点流:包裹源头。 处理流:增强功能,提高性能。 3、IO流具体分类 按操作方式分类 按操作对象分类 一般操作流的步骤: (1)创建源 (2)选择流 (3)操作流(读取|写出) (4)释放资源 推荐相关文章: IO流实现文件的读取与写出,文件、文件夹的拷贝 来源:https://blog.csdn.net/weixin_42924812/article/details/105053539
  • 流的分类|IO流的体系结构
    文章目录 Java IO原理流的分类 Java IO原理 I/O是Input/Output的缩写,I/O是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通信等。 Java程序中,对于数据的输入/输出操作以"流(stream)"的方式进行。 java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。 输入(input):读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。 输出(output):将程序(内存)数据输出到磁盘、光盘等存储设备中。 注意:输入和输出都是站位在内存的角度。 流的分类 流的分类按数据单位字节流(8bit)字符流(16bit)按流向输入流输出流按角色节点流处理流(包裹在节点流上) Java的IO流一共涉及40多个类,他们都是从如下四个抽象基类派生的。由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。 {抽象基类}字节流字符流输入流InputStreamReader输出流OutputStreamWriter 这四个父类都被抽象化,具体的实施在子类中实现。 IO流体系中访问文件的四个流可以直接操作一个File,属于节点流(文件流)。后面的所有流都是作用在已有的流基础之上的处理流。 如何判断一个流的类型?流的后缀一定带有四个抽象基类,该流的类型与其抽象基类相同。 常用的节点流与处理流
  • Java IO详解(二)------流的分类
    Java IO 流的分类一、根据流向分为输入流和输出流:  注意输入流和输出流是相对于程序而言的。  输出:把程序(内存)中的内容输出到磁盘、光盘等存储设备中     输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中      综合起来:    二、根据传输数据单位分为字节流和字符流    上面的也是 Java IO流中的四大基流。这四大基流都是抽象类,其他流都是继承于这四大基流的。 三、根据功能分为节点流和包装流  节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.  处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。 操作 IO 流的模板:  ①、创建源或目标对象    输入:把文件中的数据流向到程序中,此时文件是 源,程序是目标    输出:把程序中的数据流向到文件中,此时文件是目标,程序是源   ②、创建 IO 流对象    输入:创建输入流对象    输出:创建输出流对象   ③、具体的 IO 操作   ④、关闭资源    输入:输入流的 close() 方法    输出:输出流的 close() 方法 注意:1、程序中打开的文件 IO 资源不属于内存里的资源
  • Java IO详解(二)------流的分类
    Java IO 流的分类 一、根据流向分为输入流和输出流:   注意输入流和输出流是相对于程序而言的。   输出:把程序(内存)中的内容输出到磁盘、光盘等存储设备中      输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中       综合起来:     二、根据传输数据单位分为字节流和字符流      上面的也是 Java IO流中的四大基流。这四大基流都是抽象类,其他流都是继承于这四大基流的。 三、根据功能分为节点流和包装流   节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.   处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。 操作 IO 流的模板:   ①、创建源或目标对象     输入:把文件中的数据流向到程序中,此时文件是 源,程序是目标     输出:把程序中的数据流向到文件中,此时文件是目标,程序是源   ②、创建 IO 流对象     输入:创建输入流对象     输出:创建输出流对象   ③、具体的 IO 操作   ④、关闭资源     输入:输入流的 close() 方法     输出:输出流的 close() 方法 注意:1、程序中打开的文件 IO
  • 【 Java 基础】之 IO 与网络编程
    【 Java 基础】之 IO流 与网络编程 IOFile 类IO流流的分类流的体系结构标准化的IO过程抽象基类访问文件处理文本文件处理二进制文件 缓冲流转换流对象流其他流标准输入输出流打印流数据流 随机存取文件流NIO 网络编程InetAdress 类Socket 类TCP 网络编程UDP 网络编程URL 网络编程 IO File 类 Java 用 File 类对文件和目录进行操作,与平台无关。File 类中涉及到关于文件或目录的创建、删除、重命名、修改时间、文件大小等方法 public static void main(String[] args) { File file = new File("E:\\BaiduNetdiskDownload\\IntelliJ IDEA\\Myfigure\\gun.jpg"); System.out.println("绝对路径" + file.getAbsoluteFile()); System.out.println("路径" + file.getPath()); System.out.println("文件名" + file.getName()); System.out.println("上层文件名" + file.getParent()); System.out.println("文件大小" + file.length())
  • 学习笔记-JavaSE之IO流-1
    File类的使用 File 类的理解 File 类的使用:常用构造器 File 类的使用:路径分隔符 File 类的使用:常用方法 IO流原理及流的分类 Java IO原理 InputStream & Reader InputStream Reader OutputStream & Writer OutputStream Writer 节点流(或文件流) 节点流(或文件流):注意点 处理流之一缓冲流 处理流之二转换流(属于字符流) 补充:字符编码 处理流之三:标准输入、输出流(了解) 处理流之四:打印流(了解) 处理流之五:数据流(了解) 练习:将内存中的字符、基本数据类型的变量写出到文件中。 注意:处理异常的话,仍然应该使用try-catch-finally 将文件中存储的基本数据类型变量和字符读取到内存中,保存在变量中。 注意点:读取不同类型的数据的顺字要与当初写入文件时,保存的数据的顺序一致!| 测试 读数据 错误的写法的结果:每次读5个字符为一个字符串的数组,下此次再读的时候是覆盖该数组,如果该数组没有全部覆盖完,就会读到上 一次的未覆盖的数据。 写数据 把读取到的数据写入到另一个文件中 不能使用字符流来处理图片等字节数据,使用字节流来处理文字可能出现乱码。 结论 使用字节流实现图片的复制 字节流复制视频文件 处理流之一:缓冲流的使用 字节流中的缓冲流图片复制
  • 【Java】浅谈Java的I/O体系
    文章目录 流(Stream)流的分类java.io.*I/O体系的四大抽象类 流的分类总结表流的层次结构图字节输入流的层次结构图字节输出流的层次结构图字符输入流的层次结构图字符输出流的层次结构图 流(Stream) 流,代表的是程序中数据的流通。 数据流是一串连续不断的数据的集合,而每一比特的数据,就如同水管(假设足够狭窄)中串行流淌的一滴水。 在Java程序中,对于数据的 I/O 操作是以流的方式进行的。 我认为,“流”这个概念,构建起了Java整个I/O体系的框架。 在学习《程序设计基础》的时候,我们就应该知道——I/O的数据流向和我们固有的认知相反: 输入流:流入程序的数据 输出流:流出程序的数据 在Java程序中,从输入流读取数据(读到内存中),而从输出流输出数据(从内存存储到文件或显示到屏幕上)。 流的分类 按流的方向不同 输入流输出流 按处理数据的单位不同 字节流字符流 按功能不同 节点流处理流 java.io.* Java语言中,控制数据流的类都放在java.io包中 java.io包中有两大继承体系: 以byte处理为主的Stream类, 其命名方式是:XXXStream(XXXInputStream/XXXOutputStream)以字符处理为主的Reader/Writer类,他们的命名方式是:XXXReader/XXXWriter I/O体系的四大抽象类
  • 温故而知新(6)-Java基础之字节流、字符流、缓冲流、转换流的使用
    前言 先来一个流的大致分类 分类输入流输出流字节流字节输入流 InputStream字节输出流 OutputStream字符流字符输入流 Reader字符输出流Writer 上面的类都是流的超类。为什么会有字节流和字符流?因为如果使用字节输出流,在读取有些字符(中文字符)的时候,可能读取不全,因为一个中文占取多个字节,字符流一次读取是一个字符。 OutputStream字节输出流 OutputStream 是表示字节输出流的所有类的超类 常用方法: public void close() :关闭此输出流并释放与此流相关联的任何系统资源。public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流。public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。public abstract void write(int b) :将指定的字节输出流。 FileOutputStream 文件输出流,用于将数据写出到文件。 构造方法 public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件
  • Java学习路线从入门到入土
    Java学习路线从入门到入土 Java学习路线从入门到入土 Java学习路线从入门到入土简介Java基础课程第一阶段第一部分:Java开发介绍第二部分:Java数组第三部分:Java面向对象第四部分:常用基础类第五部分:集合第六部分:IO流第七部分:多线程第八部分:异常第九部分:网络第十部分:反射第十一部分:数据结构与算法 JavaWeb课程第二阶段内容第一部分:HTML5第二部分:CSS3第三部分:JavaScript第四部分:MySQL使用第五部分:JDBC连接池第六部分:Servlet第七部分:JSP第八部分:AJAX第九部分:jQuery第十部分:Bootstrap Java框架课程第三阶段Java框架课程内容第一部分:Maven第二部分:~~Hibernate~~第三部分:Spring第四部分:Spring MVC第五部分:MyBatis* 第六部分:~~WebService~~* 第七部分:Git* 第八部分:~~Activiti~~ Java + 云数据课程第四阶段Java + 云数据课程主要涉及的内容:第一部分:Linux版本第二部分:~~FastDFS~~第三部分:MySQL优化第四部分:Nginx反向代理第五部分:~~Quartz 作业调度~~第六部分:Redis 高性能(Key-Value)数据库第七部分:Shiro 安全(权限)框架第八部分:~~Lucene
  • linux 之文件基础 (三)、标准IO的两个概念:流、缓冲区
    1. 标准IO的一些概念 文件IO中使用了文件描述符的概念,但是并不是所有操作系统都提供文件描述符这样抽象的机制。因此 文件IO 的那一套函数,可以在类unix系统下使用。但是换做别的系统,就没有了文件描述符的概念。而c标准库,为我们提供了一套函数叫做标准IO。无论在什么系统上,我们都可以使用标准IO 所提供的函数。标准IO相当于在所有的操作系统的实现上提供了一层封装,使用标准IO 函数 进行IO操作时,在不同的操作系统上是兼容的。 标准IO提供了两方面的封装: 操作对象 – FILE*: 封装了不同OS对文件的实现,封装了缓存支持和优化。 类似于我们操作文件IO时,操作的是一个文件描述符。我们操作标准IO时,是围绕流进行操作的。 2. 流的概念 在C中引入了流(stream)的概念。它将数据的输入输出看作是数据的流入和流出,这样不管是磁盘文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。这种把数据的输入输出操作对象,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。 2.1对于输入和输出流的理解 数据是流入和流出的对象,加如数据是水。存储的目标(比如一个文件)当做水池,链接水池和外界的是水管