Java I/O 概览

Java IO是Java语言支持输入输出的API,Java IO主要关注文件,网络流,内部存储器缓冲区等的输入和输出。但是,Java IO不包括网络通信套接字的类,这些类在java network包中,不过,可以使用InputStream和OutputStream读取Socket的输入和输出数据流。

Java还包含Java NIO的IO API。 Java NIO可以在非阻塞模式下工作。 在某些情况下,非阻塞IO可以比阻塞IO提供更大的性能提升。

Java IO主要关注从源读取原始数据和将原始数据写入目标,最典型的数据来源和目的地是:

  • Files——文件
  • Pipes——通道
  • Network Connections——网络连接
  • In-memory Buffers——内存缓冲区(如,数组)

IO的本质是数据流,应用可以从流中读取数据,或者写数据到流中,Java IO中的流可以基于字节,也可以基于字符。

  • 输入:InputStream(字节)、Reader(字符);
  • 输出:outputStream(字节)、Writer(字符)。

InputStream表示有序的字节流,是所有输入字节流的父类,可以理解成一个有序的字节序列,通常从文件读取字节,或者接收网络的字节数据。常见子类FileInputStream、SocketInputStream等。

InputStream定义了一些基础的输入操作,如读(read)、跳过指定长度(skip)、关闭(close)、可读字节数(available)、标记和重置(mark和reset:用于标记到目前为止已读取数据流中的点,子类可支持和不支持)等。

OutputStream是所有输出字节流的父类,OutputStream通常始终连接到某个数据目标,如文件,网络连接,管道等。OutputStream输出数据流的目标是写入OutputStream的所有数据最终到达的地方。常见子类包括FileOutputStream、BufferedOutputStream等。

OutputStream定义了一些基础的输出操作,如写(write)、关闭(close)、刷(flush)等。

Reader是Java IO API中所有基于字符输入操作的基类。 Reader与InputStream类似,只不过,Reader用于读取文本,而InputStream用于读取原始字节。常见子类包括InputStreamReader,CharArrayReader,FileReader等。

Write是Java IO API中所有基于字符输出操作的基类。Writer与OutputStream类似,只不过,Write基于字符,而OutputStream基于字节。 换句话说,Writer用于写入文本,而OutputStream用于写入原始字节。常见的子类包括OutputStreamWriter,CharArrayWriter,FileWriter等。

Java IO包含InputStream,OutputStream,Reader和Writer类的许多子类,这些类是为了解决不同目的,所涉及的目的总结如下:

  • File Access(文件访问)
  • Network Access(网络访问)
  • Internal Memory Buffer Access(内部缓冲区访问)
  • Inter-Thread Communication( 线程间通信,如:Pipes管道)
  • Buffering(缓冲)
  • Filtering(过滤)
  • Parsing(解析)
  • Reading and Writing Text (读写文本)
  • Reading and Writing Primitive Data (读写原始类型数据,如:long、int)
  • Reading and Writing Objects(读写对象,Objects)

Java I/O 包中类的分类表格:


  1. https://mrdear.cn/2018/08/04/java/Java--why_close_file/
  2. http://tutorials.jenkov.com/java-io/index.html
  3. https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html#icomments

原文发布于微信公众号 - BanzClub(banz-club)

原文发表时间:2019-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券