窥探Java输入流-InputStream

这个系列将了解Java输入流家族中的每一个类,结合示例分析类的使用场景,结合源码学习方法的实现原理。
首先了解的是所有输入流的共同祖先java.io.InputStream,它是一个抽象类,它的方法有

abstract int read()
int read(byte b[])
int read(byte b[], int off, int len)
long skip(long n)
int available()
void close()
void mark(int readlimit)
void reset()
boolean markSupported()

abstract int read()将读入一个字节,并返回读入的字节,或者在遇到输入源结尾时返回-1。在设计具体的输入流类的时候必须覆盖这个方法以提供适用的功能。

InputStream类的其他非抽象方法,需要调用抽象的read方法,因此,各个子类都只需要覆盖这一个方法。

read是阻塞式的,它执行时将阻塞,直至读取到一个字节或者遇到输入源尾部时才返回。

当完成对输入流的读取时,应该通过调用close方法来关闭它,这个调用会释放掉十分有限的操作系统资源。InputStream实现了java.io.Closeable接口,而java.io.Closeable接口又继承了java.lang.AutoCloseable接口,所以所有输入流的操作都可以使用try-with-resource语句。

java内置的InputStream类的直接子类有

  • javax.sound.sampled.AudioInputStream
  • java.io.ByteArrayInputStream
  • java.io.FileInputStream
  • java.io.PipedInputStream
  • java.io.FilterInputStream
  • java.io.SequenceInputStream
  • java.io.StringBufferInputStream
  • java.io.ObjectInputStream

后面的章节将详细介绍上述的每一个输入流类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值