`
javazqd110
  • 浏览: 8567 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

io介绍

    博客分类:
  • java
阅读更多

 1.做java开发有一段时间了,对java的io类库总是没有较全面的了解,仅仅停留在会使用几个常用api的基础   上。抽空学习了一下,对io类库有了更全面的了解。

 2.IO:输入输出,java中使用流的抽象概念来表示。

 3.从操作的基本单元的类型划分:可分为面向字节操作的IO和面向字符操作的IO。

   3.1.在面向字节操作的IO中,api的设计者认为有关输入的类都继承自InputStream,有关输出的类都继                承自OutputStream。

         InputStream又按不同的数据源产生输入划分为不同的类,主要有:

ByteArrayInputStream

缓冲字节数组当作inputStream

FileInputStream

文件当作inputStream

PipedInputStream

用于写入PipedOutputStream的数据

SequenceInputStream

将多个InputStream进行逻辑串联成单一的inputStream

StringBufferedInputStream

String转成inputStream(jdk1.1开始不建议使用)

FilterInputStream

此为装饰器的抽象类

             对应的OutputStream的主要类有:

ByteArrayOutputStream

缓冲字节数组当作OutputStream

FileOutputStream

文件当作OutputStream

PipedOutputStream

用于写出到PipedinputStream的数据

FilterOutputStream

此为装饰器的抽象类

3.2.关于FilterOutputStream/FilterInputStream两个抽象类的作用,java设计者采用装饰器模式来实现不              同功 能的组合,而装饰器模式必须具有和其所装饰的对象相同的接口,先看看两个装饰器有哪些具               体装饰功能类

 

               FilterInputStream

DataInputStream

可以读取不同基本类型数据以及String对象

BufferedInputStream

对数据进行缓冲读取

PushbackInputStream

具有”推回”一个字节的功能

CheckInputStream

可对读取数据校验

InflaterInputSream

具有对输入数据解压缩功能

DeflaterInputSteam

具有对输入数据压缩数据功能

 

               FilterOutputStream

DataOutputStream

可以写出不同基本类型数据以及String对象

BufferedOutputStream

对数据进行缓冲写出

PrintStream

格式化输出(能够方便地打印各种数据值表示形式,指定字符编码,提供两项其他输出流同的功能:1.永远不会抛出 IOException,异常情况仅设置可通过 checkError 方法测试的内部标志;2.自动刷新--自动调用 flush 方法println 方法,写入一个换行符)

CheckOutputStream

可对写出数据校验

InflaterOutputSream

具有对输出数据解压缩数据功能

DeflaterOutputSteam

具有对输出数据压缩数据功能

      3.3.我可以对InputStream和OutputSream进行功能的组合操作,如对数据缓冲再格式化输出。 

 

 

      4.JDK又为我们提供另一种形式的IO操作----面向字符的IO操作,think in java的作者说面向字符形式的IO           提供兼容Unicode的功能,主要是为了国际化,且比面向字节形式IO要更快。同样,api的设计者认为             有关输入的类都继承自Reader,有关输出的类都继承自Writer。

 

        按不同的数据源产生划分

Reader

BufferedReader

缓冲字符数组当作Reader(InputStream的不同,此类直 接继承Reader)

CharArrayReader

缓冲字符数组当作Reader

PipedReader

传送的字符输入流

StringReader

字符串的读取

InputStreamReader

此为适配器类(是字节流通向字符流的桥梁,使用指定的 charset 读取字节并将其解码为字符)

FilterReader

此为装饰器的抽象类

 

          Writer 

BufferedWriter

缓冲字符数组当作Writer

CharArrayWriter

缓冲字符数组当作Writer

PipedWriter

传送的字符输出流

StringWriter

字符串的写出

PrintWriter

向文本输出流打印对象的格式化表示形式

OutputStreamWriter

此为适配器类(是字节流通向字符流的桥梁,使用指定的 charset 读取字节并将其解码为字符)

FilterWriter

此为装饰器的抽象类

  4.1.上图看出ReaderWriterInputStreamOutputStream在类的组织结构上大致相似,但不完全相同。

  4.2.关于在字符流体系中将文件流(FileReader/FileWriter)作为适配器的子类来实现。

 

 5.最后附上一张从网上下的结构图

 

     

  

  6.文章参考thinking in java。
 

 

 

  • 大小: 169.8 KB
0
1
分享到:
评论

相关推荐

    Factory IO

    **Factory IO** 是一款强大的工业自动化领域的仿真软件,它提供了高度真实的3D环境,用于模拟和测试各种生产线。用户可以通过Factory IO创建、设计并优化工业生产流程,无需实际硬件即可进行系统验证和故障排查。这...

    RapidIO学习笔记--互连协议的介绍

    通过阅读"rapidio介绍"和"rapidio_3g"这两个文档,我们可以更深入地理解RapidIO的最新发展,例如3G版本可能引入的新特性和优化,以及如何将这些知识应用于实际的系统设计和实施中。学习RapidIO不仅可以提升对嵌入式...

    AC6102_V2 IO介绍.bmp

    AC6102IO口详细功能图片介绍

    诸葛io介绍2018V2.0.pdf

    诸葛io是一款专注于数据智能决策的平台,自2014年开始研发,致力于帮助企业实现用户全生命周期的数据采集、分析和决策。这款产品凭借其创新的UTSE(用户、触点、会话、事件)用户行为分析模型,已经在众多知名企业中...

    Nodejs Socket io Mysql Demo

    2. **Socket.IO介绍** - **Socket.IO提供了一种简单的方式来实现WebSocket协议,同时还提供了对其他多种浏览器兼容的 fallback 技术,确保在WebSocket不支持的环境中也能实现实时通信。 - **事件机制**:Socket.IO...

    socket.io应用简介

    socket.io实时通讯入门讲解PPT,并有代码示例。

    单片机IO口介绍 单片机IO口介绍

    单片机IO口是单片机中非常关键的部分,它是指单片机内部集成的输入/输出端口,用于与外部设备进行数据交互。IO口的每个引脚既可以配置为输入模式,接收外部信号,也可以设置为输出模式,驱动外部负载。在单片机的...

    基于NodeJS的聊天室程序(socket.io实现)

    **socket.io介绍** socket.io是一个实时应用程序框架,它在WebSockets之上提供了一层抽象,处理了WebSockets的一些不足,如连接不稳定和浏览器兼容性问题。socket.io支持多种传输机制,包括WebSocket、polling等,...

    Node.js-网站在线客服基于socket.io和node

    Socket.IO介绍** Socket.IO的主要目标是提供在所有浏览器和移动平台上进行实时、低延迟、跨域的双向通信。它在WebSocket之上做了封装,自动处理WebSocket的不足,如不支持旧版浏览器的问题,以及在网络不稳定时的重...

    单片机IO口介绍

    单片机IO口介绍

    施耐德QUANTUM 系列PLC分布式IO模块介绍.

    施耐德QUANTUM 系列PLC分布式IO模块介绍 一、总体介绍 施耐德QUANTUM 系列PLC分布式IO模块是用于工业自动化控制的高性能IO模块。该模块系列具有高灵活性、可靠性和可扩展性,广泛应用于工厂自动化、过程控制和...

    串行RapidIO技术介绍

    《串行RapidIO技术详解》 RapidIO技术,作为一种专为高性能嵌入式系统设计的芯片间和板间互连技术,是应对日益增长的带宽需求、降低成本、提高系统灵活性和可靠性的关键解决方案。它的发展源于嵌入式系统在通信、...

    RAPIDIO嵌入式系统互连_rapidio中文协议_rapidio嵌入式_

    1. **协议基础**:介绍 RapidIO 协议的基本概念,包括协议架构、数据包格式、地址映射和错误处理机制。 2. **物理层与接口**:解释不同物理层实现的细节,如电气接口标准、光接口标准,以及信号编码和解码。 3. **...

    罗克韦尔分布式IO系统介绍

    罗克韦尔自动化是全球知名的工业自动化解决方案提供商,其分布式输入/输出(IO)系统在工业控制领域扮演着重要角色。...详细内容可以在“分布式IO系统介绍.pdf”文件中找到,该文件应提供更深入的技术细节和案例分析。

    易福门IO-Link介绍.zip

    《易福门IO-Link技术详解》 IO-Link是一种开放的、标准化的通信协议,主要应用于工业自动化领域的传感器和...通过下载"易福门IO-Link介绍"的资料,可以更深入地了解这一技术,为企业的自动化升级提供有力的技术支持。

    socket.io学习教程之基础介绍(一)

    Socket.IO 学习教程之基础介绍 Socket.IO 是一个基于事件的实时双向通讯库,它提供了实时的双向通讯功能,使得 Web 应用程序可以实时地传输数据。Socket.IO 的出现解决了传统 AJAX 轮询的延时和服务端负载的问题。 ...

    Arduino数字IO和模拟IO详解

    ### Arduino数字IO和模拟IO详解 #### 一、数字输出 ...通过上述五个方面的详细介绍,我们可以清晰地了解到Arduino在数字IO和模拟IO方面的工作原理和技术细节,这对于学习和应用Arduino来说是非常关键的基础知识。

    系统IO跟标准IO的连续与区别

    在本文中,我们将详细介绍系统 IO 和标准 IO 的定义、特点、函数调用及应用场景。 一、系统 IO 和标准 IO 的定义 系统 IO 又称文件 IO 或低级磁盘 IO,是一种不带缓存的 IO 操作,它提供了基本的 IO 服务,特定于 ...

    Linux文件IO跟标准IO总结

    - **文件I_O操作.pdf**:这个文件可能会介绍Linux下文件IO的各种操作,如文件打开、关闭、读写以及相关的系统调用和错误处理。 通过阅读这些文档,初学者可以更全面地了解Linux下的IO机制,以便在实际编程中选择最...

    IO模型介绍

    ### IO模型介绍 #### 一、IO概述 **IO**,即输入(Input)与输出(Output),是计算机系统中数据交互的基础。数据通过IO类库在内部表示与外部表示之间进行转换,这一过程涉及多种步骤和技术。 #### 二、内部表示与...

Global site tag (gtag.js) - Google Analytics