zoukankan      html  css  js  c++  java
  • Java:IO

    流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。

    流的本质:数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
    流的作用:为数据源和目的地建立一个输送通道。

    Java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流。

    IO的分类:

    • 根据处理数据类型的不同分为:字符流和字节流
    • 根据数据流向不同分为:输入流和输出流
    • 按数据来源(去向)分类:
      • File(文件): FileInputStream, FileOutputStream, FileReader, FileWriter 
      • byte[]:ByteArrayInputStream, ByteArrayOutputStream 
      • Char[]: CharArrayReader, CharArrayWriter 
      • String: StringBufferInputStream, StringReader, StringWriter 
      • 网络数据流:InputStream,OutputStream, Reader, Writer 

    下面重点从输入流和输出流进行区分。

    字节流的父类

    InputStream 是所有输入字节流的父类,是一个抽象类。

    实现的接口有:Closeable, AutoCloseable

    直接子类有:

    ByteArrayInputStream, FileInputStream, FilterInputStream, ObjectInputStream, InputStream, PipedInputStream,
    AudioInputStream, SequenceInputStream, StringBufferInputStream

    OutputStream 是所有输出字节流的父类,是一个抽象类。

    实现的接口有:Closeable, Flushable, AutoCloseable

    直接子类有:

    ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream

    字符流的父类

    Reader 是所有的输入字符流的父类,是一个抽象类。

    实现的接口有:Closeable, AutoCloseable, Readable

    直接子类有:

    BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

    Writer 是所有的输出字符流的父类,它是一个抽象类。

    实现的接口有:Closeable, Flushable, Appendable, AutoCloseable

    直接子类有:

    BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

    核心方法对比

    输入流

    InputStream

    • read( )
    • read(byte[ ])
    • read(byte[ ], int, int)

    Reader

    • read( )
    • read(char[ ])
    • read(char[ ], int, int)

    对比可以看到,输入流中字节流和字符流的核心方法都是一样的,区别在于字节流中缓存数据是以字节数组的形式存储,而字符流则是以字符数组的形式存储。

    输出流

    OutputStream

    • write(int)
    • write(byte[ ])
    • write(byte[ ], int, int)

    Writer

    • write(int)
    • write(char[ ])
    • write(char[ ], int, int)
    • write(String)
    • write(String, int, int)

    对比可以看到,核心方法都是一样的。Writer 要稍微多几个方法。

    参考:

    https://www.cnblogs.com/ylspace/p/8128112.html 

    https://docs.oracle.com/javase/8/docs/api/index.html

    https://www.cnblogs.com/10158wsj/p/6769213.html

  • 相关阅读:
    HDU 4512 吉哥系列故事——完美队形I (LCIS)
    HDU 4506 小明系列故事——师兄帮帮忙
    SDUT Greatest Number
    HDU 4545 魔法串
    HDU 4546 比赛难度 (优先队列 * * )
    Android布局学习
    K9mail编译
    没有小的项目
    dxDBTreeView自动删除数据问题
    SQL Server查看表空间占用情况
  • 原文地址:https://www.cnblogs.com/colin220/p/10650198.html
Copyright © 2011-2022 走看看