• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java中IO流简介_动力节点Java学院整理

Java中IO流简介_动力节点Java学院整理

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java io流读写文件,java io流完整例子,java.io包,java中io流,java.io.eofexception等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Java io简介

Java io系统的设计初衷,就是为了实现“文件、控制台、网络设备”这些io设置的通信。例如,对于一个文件,我们可以打开文件,然后进行读取和写入。在java 1.0中,java提供的类都是以字节(byte)为单位,例如,FileInputStream和FileOutputStream。而到了java 1.1,为了与国际化进行接轨,在java io中添加了许多以字符(Unicode)为单位进行操作的类。

在java io的称呼中,我们经常会提到“输入流”、“输出流”等等概念。首先,什么是流呢?

所谓“流”,就是一种抽象的数据的总称,它的本质是能够进行传输。

      a) 按照“流”的数据流向,可以将其化分为:输入流和输出流。

      b) 按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。而且,需要注意的是,java的字节是有符号类型,而字符是无符号类型!

Java io框架

有了上面的基本概念之后,我们看看java io的框架。

1. 以字节为单位的输入流的框架图

下面,是以字节为单位的输入流的框架图。

从中,我们可以看出。

(01) InputStream 是以字节为单位的输入流的超类。InputStream提供了read()接口从输入流中读取字节数据。

(02) ByteArrayInputStream 是字节数组输入流。它包含一个内部缓冲区,该缓冲区包含从流中读取的字节;通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的。

(03) PipedInputStream 是管道输入流,它和PipedOutputStream一起使用,能实现多线程间的管道通信。

(04) FilterInputStream 是过滤输入流。它是DataInputStream和BufferedInputStream的超类。

(05) DataInputStream 是数据输入流。它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。

(06) BufferedInputStream 是缓冲输入流。它的作用是为另一个输入流添加缓冲功能。

(07) File 是“文件”和“目录路径名”的抽象表示形式。关于File,注意两点:

a), File不仅仅只是表示文件,它也可以表示目录!

b), File虽然在io保重定义,但是它的超类是Object,而不是InputStream。

(08) FileDescriptor 是“文件描述符”。它可以被用来表示开放文件、开放套接字等。

(09) FileInputStream 是文件输入流。它通常用于对文件进行读取操作。

(10) ObjectInputStream 是对象输入流。它和ObjectOutputStream一起,用来提供对“基本数据或对象”的持久存储。

2. 以字节为单位的输出流的框架图

下面,是以字节为单位的输出流的框架图。

从中,我们可以看出。以字节为单位的输出流的公共父类是OutputStream。

(01) OutputStream 是以字节为单位的输出流的超类。OutputStream提供了write()接口从输出流中读取字节数据。

(02) ByteArrayOutputStream 是字节数组输出流。写入ByteArrayOutputStream的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

(03) PipedOutputStream 是管道输出流,它和PipedInputStream一起使用,能实现多线程间的管道通信。

(04) FilterOutputStream 是过滤输出流。它是DataOutputStream,BufferedOutputStream和PrintStream的超类。

(05) DataOutputStream 是数据输出流。它是用来装饰其它输出流,它“允许应用程序以与机器无关方式向底层写入基本 Java 数据类型”。

(06) BufferedOutputStream 是缓冲输出流。它的作用是为另一个输出流添加缓冲功能。

(07) PrintStream 是打印输出流。它是用来装饰其它输出流,能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

(08) FileOutputStream 是文件输出流。它通常用于向文件进行写入操作。

(09) ObjectOutputStream 是对象输出流。它和ObjectInputStream一起,用来提供对“基本数据或对象”的持久存储。 

3. 以字节为单位的输入流和输出流关联的框架图

输入流和输出流都有对应的关系,下面是将以字节为单位的输入流和输出流关联起来的图片。 

4. 以字符为单位的输入流的框架图

下面,是以字符为单位的输入流的框架图。 

从中,我们可以看出。以字符为单位的输入流的公共父类是Reader。

(01) Reader 是以字符为单位的输入流的超类。它提供了read()接口来取字符数据。

(02) CharArrayReader 是字符数组输入流。它用于读取字符数组,它继承于Reader。操作的数据是以字符为单位!

(03) PipedReader 是字符类型的管道输入流。它和PipedWriter一起是可以通过管道进行线程间的通讯。在使用管道通信时,必须将PipedWriter和PipedReader配套使用。

(04) FilterReader 是字符类型的过滤输入流。

(05) BufferedReader 是字符缓冲输入流。它的作用是为另一个输入流添加缓冲功能。

(06) InputStreamReader 是字节转字符的输入流。它是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。

(07) FileReader 是字符类型的文件输入流。它通常用于对文件进行读取操作。 

5. 以字符为单位的输出流的框架图

下面,是以字符为单位的输出流的框架图。 

(01) Writer 是以字符为单位的输出流的超类。它提供了write()接口往其中写入数据。

(02) CharArrayWriter 是字符数组输出流。它用于读取字符数组,它继承于Writer。操作的数据是以字符为单位!

(03) PipedWriter 是字符类型的管道输出流。它和PipedReader一起是可以通过管道进行线程间的通讯。在使用管道通信时,必须将PipedWriter和PipedWriter配套使用。

(04) FilterWriter 是字符类型的过滤输出流。

(05) BufferedWriter 是字符缓冲输出流。它的作用是为另一个输出流添加缓冲功能。

(06) OutputStreamWriter 是字节转字符的输出流。它是字节流通向字符流的桥梁:它使用指定的 charset 将字节转换为字符并写入。

(07) FileWriter 是字符类型的文件输出流。它通常用于对文件进行读取操作。

(08) PrintWriter 是字符类型的打印输出流。它是用来装饰其它输出流,能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。 

6. 以字符为单位的输入流和输出流关联的框架图

下面是将以字符为单位的输入流和输出流关联起来的图片。 

7. 字节转换为字符流的框架图

在java中,字节流能转换为字符流,下面是它们的转换关系图。 

从中,我们可以看出。

(01) FileReader继承于InputStreamReader,而InputStreamReader依赖于InputStream。具体表现在InputStreamReader的构造函数是以InputStream为参数。我们传入InputStream,在InputStreamReader内部通过转码,将字节转换成字符。

(02) FileWriter继承于OutputStreamWriter,而OutputStreamWriter依赖于OutputStream。具体表现在OutputStreamWriter的构造函数是以OutputStream为参数。我们传入OutputStream,在OutputStreamWriter内部通过转码,将字节转换成字符。 

8. 字节和字符的输入流对应关系

9. 字节和字符的输出流对应关系

认识了java io的总体框架之后。接下来,我们可以开始对其中的各个类进入学习,包括“它的作用和用法,源码的探索”等方面。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java 中IO流字符流详解及实例
  • Java中IO流简介_动力节点Java学院整理
  • Java IO流体系继承结构图_动力节点Java学院整理
  • Java IO流 文件的编码实例代码
  • 关于Java中的IO流总结(推荐)
  • Java中IO流详解
  • java IO 文件操作方法总结
  • Java IO中字节流复制图片实现代码
  • java 基础知识之IO总结
  • Java 中IO流字符流详解及实例

相关文章

  • 2017-05-28Spring Data JPA实现动态查询的两种方法
  • 2017-05-28SpringMVC中使用bean来接收form表单提交的参数时的注意点
  • 2017-05-28java实现二叉树的创建及5种遍历方法(总结)
  • 2017-05-28java数据结构与算法之插入排序详解
  • 2017-05-28Spring Boot 简介(入门篇)
  • 2017-05-28Java软件编程培训机构靠谱吗
  • 2017-05-28SpringBoot集成Spring Data JPA及读写分离
  • 2017-05-28深入讲解Java 9中的九个新特性
  • 2017-05-28springboot注入servlet的方法
  • 2017-05-28Spring MVC学习笔记之json格式的输入和输出

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java Calendar类的详解及使用实例
    • 详解Spring MVC自动为对象注入枚举类型
    • JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建
    • Spring boot 整合CXF开发web service示例
    • JavaWeb使用Session和Cookie实现登录认证
    • java实现excel和txt文件互转
    • Jsoup解析html实现招聘信息查询功能
    • Java微信二次开发(三) Java微信各类型消息封装
    • java导出大批量(百万以上)数据的excel文件
    • Java中对象的序列化详解及实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有