zoukankan      html  css  js  c++  java
  • java编程思想——java IO系统

    一、什么是IO

    io在本质上是单个字节的移动。而流能够说是字节移动的载体和方式,它不停的向目标处移动数据。我们要做的就是依据流的方向从流中读取数据或者向流中写入数据。


    二、java中支持IO操作的库类

    1、依照数据类型分为两类:

    (1)字节类型:InputStream和OutputStream

    (2)字符类型:Writer和Reader

    2、依照数据的流动方向,主要分为两类:

    (1)基于磁盘操作的io接口:File

      (2)基于网络的io接口:socket

    三、字节流、字符流的io接口说明

      字节流包含输入流InputStream和输出流OutputStream。字符流包含输入流Reader,

        InputStream相关类图例如以下。仅仅列举了一级子类:

       

        InputStream提供了一些read方法供子类继承。用来读取字节。

        OutputStream相关类图例如以下:

       

        OutputStream提供了一些write方法供子类继承,用来写入字节。

        Reader相关类图例如以下:

       

        Reader提供了一些read方法供子类继承。用来读取字符。

        Writer相关类图例如以下:

       

        Writer提供了一些write方法供子类继承,用来写入字符。

        每一个字符流子类差点儿都会有一个相相应的字节流子类,两者功能一样。区别仅仅是在于操作的是字节还是字符。

    比如CharArrayReader和 ByteArrayInputStream,两者都是在内存中建立数组缓冲区作为输入流,不同的仅仅是前者数组用来存放字符。每次从数组中读取一个字符;后者则是针对字节。

    ByteArrayInputStream、CharArrayReader 为多线程的通信提供缓冲区操作功能。经常使用于读取网络中的定长数据包
    ByteArrayOutputStream、CharArrayWriter 为多线程的通信提供缓冲区操作功能。经常使用于接收足够长度的数据后进行一次性写入
    FileInputStream、FileReader 把文件写入内存作为输入流,实现对文件的读取操作
    FileOutputStream、FileWriter 把内存中的数据作为输出流写入文件。实现对文件的写操作
    StringReader 读取String的内容作为输入流
    StringWriter 将数据写入一个String
    SequenceInputStream 将多个输入流中的数据合并为一个数据流
    PipedInputStream、PipedReader、PipedOutputStream、PipedWriter 管道流。主要用于2个线程之间传递数据
    ObjectInputStream 读取对象数据作为输入流,对象中的 transient 和 static 类型的成员变量不会被读取或写入
    ObjectOutputStream 将数据写入对象
    FilterInputStream、FilterOutputStream、FilterReader、FilterWriter 过滤流通常源和目标是其它的输入输出流,大家能够看到有众多的子类。各实用途,就不一一介绍了

  • 相关阅读:
    Marker
    Log4j 2
    Spring 中 CharacterEncodingFilter 失效?
    Java 泛型通配符
    待修 Bug
    Java Class SecurityManager
    bzoj 5210: 最大连通子块和【动态dp+树剖+线段树+堆】
    洛谷 P4719 【模板】动态dp【动态dp】
    bzoj 2555: SubString【后缀自动机+LCT】
    洛谷 P4125 [WC2012]记忆中的水杉树【扫描线+set+线段树】
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7137149.html
Copyright © 2011-2022 走看看