java.io
包的InputStream
类是一个抽象超类,它表示字节的输入流。
由于InputStream
是抽象类,因此它本身没有用。但是,其子类可用于读取数据。
InputStream的子类
为了使用InputStream
的功能,我们可以使用其子类。他们之中有一些是:
- FileInputStream
- ByteArrayInputStream
- ObjectInputStream
在下一个教程中,我们将学习所有这些子类。
创建一个InputStream
为了创建InputStream,我们必须首先导入java.io.InputStream
包。导入包后,就可以创建输入流。
// Creates an InputStream
InputStream object1 = new FileInputStream();
在这里,我们使用FileInputStream
创建了一个输入流。这是因为InputStream
是一个抽象类。因此,我们无法创建InputStream
的对象。
注意 :我们还可以从InputStream
其他子类创建输入流。
InputStream的方法
InputStream
类提供了由其子类实现的不同方法。以下是一些常用方法:
-
read()
-从输入流中读取一个字节的数据 -
read(byte[] array)
-从流中读取字节并存储在指定的数组中 -
available()
-返回输入流中可用的字节数 -
mark()
-标记输入流中已读取数据的位置 -
reset()
-将控件返回到流中设置标记的点 -
markSupported()
-检查流中是否支持mark()
和reset()
方法 -
skips()
-从输入流中跳过并丢弃指定数量的字节 -
close()
-关闭输入流
示例:使用FileInputStream的InputStream
这是我们如何使用FileInputStream
类实现InputStream
方法。
假设我们有一个名为input.txt的文件,其中包含以下内容。
This is a line of text inside the file.
让我们尝试使用FileInputStream
( InputStream
的子类)读取此文件。
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String args[]) {
byte[] array = new byte[100];
try {
InputStream input = new FileInputStream("input.txt");
System.out.println("Available bytes in the file: " + input.available());
// Read byte from the input stream
input.read(array);
System.out.println("Data read from the file: ");
// Convert byte array into string
String data = new String(array);
System.out.println(data);
// Close the input stream
input.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
输出
Available bytes in the file: 35
Data read from the file:
This is a line of text inside the file
在上面的示例中,我们使用FileInputStream
类创建了一个输入流。输入流与文件input.txt链接。
InputStream input = new FileInputStream("input.txt");
为了从input.txt文件中读取数据,我们实现了这两种方法。
input.read(array); // to read data from the input stream
input.close(); // to close the input stream
要了解更多信息,请访问Java InputStream(Java官方文档)。