• Java IO


    1、概念

    Java将数据从源(文件、内存、键盘、网络)读入到内存 中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。

    2、分类

    按照不同的分类标准,IO流分为不同类型。主要有以下几种方式:按照数据流方向、数据处理的单位和功能。还有一些分类比如:对象流、缓冲流、压缩流、文件流等等。其实都是节点流和处理流的子分类。不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。这个四个类的关系如下:

    字节流

    字符流

    输入流

    InputStream

    Reader

    输出流

    OutputStream

    Writer

    2.1输入流与输出流。

    数据从内存到硬盘,通常认为是输出流,即写操作;相反,从硬盘到内存,通常认为是输入流,即读操作;这里的输入、输出是从内存的角度划分的。

    2.2字节流和字符流

    字节流和字符流区别非常简单,它们的用法几乎一样。区别在于字节流和字符流所处理的最小数据单元不同。

    处理最小数据单元

    基类

    字节流

    8

    In/OutStream

    字符流

    16

    Reader/writer

    3.3节点流和处理流

    节点流是可以从或向一个特定的地方(节点)读写数据,也叫 低级流。如FileReader。

    处理流是在对节点流封装的基础上的一种流,通过封装后来实现数据的读写功能,也叫高级流。

    节点流

    未经封装,low level stream

    处理流

    封装过,  high level stream

        常用节点流

    父 类 InputStream OutputStream Reader Writer
    文 件 *FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流
    数 组*ByteArrayInputStream   ByteArrayOutputStream   CharArrayReader   CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
    字符串 *无 无StringReader StringWriter    对字符串进行处理的节点流
    管 道 *PipedInputStream PipedOutputStream PipedReader PipedWriter对管道进行处理的节点流

        常用处理流(关闭处理流使用关闭里面的节点流)

    父 类 InputStream OutputStream Reader Writer
    缓冲流 *BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter

    ----需要父类作为参数构造,增加缓冲功能,避免频繁读写硬盘,可以初始化缓冲数据的大小,由于带了缓冲功能,所以就写数据的时候需要使用flush 方法咯 转换流 *InputStreamReader   OutputStreamWriter- 要inputStream 或OutputStream 作为

    参数,实现从字节流到字符流的转换数据流 *DataInputStream DataOutputStream -提供将基础数据类型写入到文件中,或者

    读取出来,为什么要有这个流呢?看这样的分析,如果没有这种流的话,有一个long,本身只占8 个字节,如果我要写入到文件,需要转成字符串,然后在转成字符数组,那空间会占用很多,但是有了这种流之后就很方便了,直接将这8 个字节写到文件就完了。。是不是既节约了内存空间有让程序写起来更加方便简单了呐。写倒是很简单,但是读取的时候就注意了,根据读取的数据类型,指针会往下移,所以你写的顺序必须要和读的顺序一致才能完成正确的需求.

    3.4 Java输入输出流

    总结。

    分类

    字节输入流

    字节输出流

    字符输入流

    字符输出流

    抽象基类

    InputStream

    OutputStream

    Reader

    Writer

    访问文件

    FileInputStream

    FileOutputStream

    FileReader

    FileWriter

    访问数组

    ByteArrayInputStream

    ByteArrayOutputStream

    CharArrayReader

    CharArrayWriter

    访问管道

    PipedInputStream

    PipedOutputStream

    PipedReader

    PipedWriter

    访问字符串

    StringReader

    StringWriter

    缓冲流

    BufferedInputStream

    BufferedOutputStream

    BufferedReader

    BufferedWriter

    转换流

    InputStreamReader

    OutputStreamWriter

    对象流

    ObjectInputStream

    ObjectOutputStream

    抽象基类

    FilterInputStream

    FilterOutputStream

    FilterReader

    FilterWriter

    打印流

    PrintStream

    PrintWriter

    推回输入流

    PushbackInputStream

    PushbackReader

    特殊流

    DataInputStream

    DataOutputStream

    序列化【tbw】

  • 相关阅读:
    HAOI2008题解
    codeforces round375(div.2)题解
    codeforces round373(div.2) 题解
    TJOI2015题解
    CF976D. Degree Set
    dtoj#4243. 熊猫(i)
    dtoj#4242. 大爷(w)&&CF1061E
    CF786C Till I Collapse
    dtoj#4239. 删边(cip)
    dtoj#2504. ZCC loves cube(cube)
  • 原文地址:https://www.cnblogs.com/flysnail/p/2434979.html
Copyright © 2020-2023  润新知