前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java I/O 概览

Java I/O 概览

作者头像
搬砖俱乐部
发布2019-06-15 18:08:55
6400
发布2019-06-15 18:08:55
举报
文章被收录于专栏:BanzClubBanzClub

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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BanzClub 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档