返回
字节输入流顶级父类InputStream
后端
2023-09-29 03:00:05
对于任何编程语言来说,文件读写都是一个基本的功能。在Java中,我们使用IO流来完成这项工作。字节输入流是Java IO中的一种重要流类型,它允许我们从各种来源读取字节数据,例如文件、网络连接或内存缓冲区。
InputStream的基本操作
InputStream定义了几个基本操作来读取字节数据:
read()
:从流中读取一个字节并返回。如果流中没有更多字节可读,则返回-1。read(byte[] b)
:从流中读取多个字节到字节数组b中。返回读取的字节数,如果流中没有更多字节可读,则返回-1。skip(long n)
:跳过流中的n个字节。返回实际跳过的字节数,如果流中没有更多字节可跳过,则返回0。mark(int readlimit)
:在流中设置一个标记。稍后,可以使用reset()方法重置流到该标记。reset()
:将流重置到上一次设置标记的位置。close()
:关闭流并释放所有资源。
InputStream的子类
InputStream有几个重要的子类,每个子类都提供不同的功能:
FileInputStream
:从文件中读取字节数据。ByteArrayInputStream
:从字节数组中读取字节数据。StringBufferInputStream
:从字符串缓冲区中读取字节数据。FilterInputStream
:包装另一个输入流,并向其添加额外的功能,例如缓存或加密。
使用InputStream的示例
以下是一个使用FileInputStream读取文件内容的示例:
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
try {
// 创建一个FileInputStream对象,并将其与文件相关联
FileInputStream fis = new FileInputStream("myfile.txt");
// 从文件中读取字节数据
byte[] data = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = fis.read(data)) != -1) {
// 将字节数据转换成字符串
String str = new String(data, 0, numBytesRead);
// 打印字符串
System.out.println(str);
}
// 关闭FileInputStream对象
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结论
InputStream是Java IO中字节输入流的顶级父类。它提供了读取字节数据、标记和重置流、关闭流等基本操作。InputStream有几个重要的子类,每个子类都提供不同的功能。我们可以在各种场景中使用InputStream及其子类来读取字节数据,例如从文件、网络连接或内存缓冲区中读取数据。