面试必备:详解Java I/O流,掌握这些就可以说精通了? (3)

上面的例子是《Java 编程思想》中的示例,这本书中的每个代码示例都很经典,Bruce Eckel大神把面向对象的思想应用的炉火纯青,非常值得细品。

InputStream和OutputStream

InputStream是输入流,前面已经说到,它是从数据源对象将数据读入程序内容时,使用的流对象。通过看InputStream的源码知道,它是一个抽象类,

1public abstract class InputStream  extends Object  implements Closeable
2

提供了一些基础的输入流方法:

1//从数据中读入一个字节,并返回该字节,遇到流的结尾时返回-1
2abstract int read() 
3
4//读入一个字节数组,并返回实际读入的字节数,最多读入b.length个字节,遇到流结尾时返回-1
5int read(byte[] b)
6
7// 读入一个字节数组,返回实际读入的字节数或者在碰到结尾时返回-1.
8//b:代表数据读入的数组, off:代表第一个读入的字节应该被放置的位置在b中的偏移量,len:读入字节的最大数量
9int read(byte[],int off,int len)
10
11// 返回当前可以读入的字节数量,如果是从网络连接中读入,这个方法要慎用,
12int available() 
13
14//在输入流中跳过n个字节,返回实际跳过的字节数
15long skip(long n)
16
17//标记输入流中当前的位置
18void mark(int readlimit) 
19
20//判断流是否支持打标记,支持返回true
21boolean markSupported() 
22
23// 返回最后一个标记,随后对read的调用将重新读入这些字节。
24void reset() 
25
26//关闭输入流,这个很重要,流使用完一定要关闭
27void close()
28

直接从InputStream继承的流,可以发现,基本上对应了每种数据源类型。

类 功能
ByteArrayInputStream   将字节数组作为InputStream  
StringBufferInputStream   将String转成InputStream  
FileInputStream   从文件中读取内容  
PipedInputStream   产生用于写入相关PipedOutputStream的数据。实现管道化  
SequenceInputStream   将两个或多个InputStream对象转换成单一的InputStream  
FilterInputStream   抽象类,主要是作为“装饰器”的接口类,实现其他的功能流  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypwdw.html