Java的IO库提供了多个实现了InputStream类的子类,以便于从不同的源读取数据。下面是一些常见的InputStream子类及其特点:
1. FileInputStream:
从文件中读取数据。它是最常用的InputStream之一。
使用方法:
InputStream inputStream = new FileInputStream("file.txt");
int data = inputStream.read();
while (data != -1) {
// 处理读取到的数据
// ...
data = inputStream.read();
}
inputStream.close();
2. ByteArrayInputStream:
从字节数组中读取数据。
使用方法:
byte[] data = {1, 2, 3, 4, 5};
InputStream inputStream = new ByteArrayInputStream(data);
int byteRead = inputStream.read();
while (byteRead != -1) {
// 处理读取到的字节数据
// ...
byteRead = inputStream.read();
}
inputStream.close();
3. BufferedInputStream:
提供了缓冲功能,加快了数据读取速度。
使用方法:
InputStream inputStream = new BufferedInputStream(new FileInputStream("file.txt"));
int data = inputStream.read();
while (data != -1) {
// 处理读取到的数据
// ...
data = inputStream.read();
}
inputStream.close();
4. DataInputStream:
常用于读取原始数据类型数据(如int、double等)。
使用方法:
InputStream inputStream = new DataInputStream(new FileInputStream("file.txt"));
int data = inputStream.readInt();
while (data != -1) {
// 处理读取到的数据
// ...
data = inputStream.readInt();
}
inputStream.close();
5. ObjectInputStream:
用于读取Java对象,可以将对象序列化之后进行读取。
使用方法:
InputStream inputStream = new ObjectInputStream(new FileInputStream("file.txt"));
Object obj = inputStream.readObject();
while (obj != null) {
// 处理读取到的对象
// ...
obj = inputStream.readObject();
}
inputStream.close();
这些InputStream子类都实现了InputStream的抽象方法,因此它们都具有read()方法用于读取数据,并且都需要在使用完毕后调用close()方法关闭流。其中,BufferedInputStream和DataInputStream还提供了一些额外的读取方法,例如BufferedInputStream的read(byte[] b)和DataInputStream的readInt()。
与其他InputStream子类相比较,高级应用可以是使用FilterInputStream的子类,它们提供了对InputStream的额外处理功能,例如解密、解压缩等。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)