📅  最后修改于: 2023-12-03 14:42:14.619000             🧑  作者: Mango
FileInputStream
是Java中用于从文件中读取数据的输入流。它继承自InputStream
类,并实现了Closeable
和AutoCloseable
接口,因此可以在使用完毕后关闭流。本文将介绍FileInputStream
的使用方法和一些常用的操作。
在使用FileInputStream
之前,需要在程序中导入以下依赖:
import java.io.FileInputStream;
import java.io.IOException;
我们可以通过以下两种方式创建FileInputStream
对象:
String filePath = "path/to/file.txt";
try {
FileInputStream fis = new FileInputStream(filePath);
// 使用fis进行文件读取操作
} catch (IOException e) {
e.printStackTrace();
}
import java.io.File;
File file = new File("path/to/file.txt");
try {
FileInputStream fis = new FileInputStream(file);
// 使用fis进行文件读取操作
} catch (IOException e) {
e.printStackTrace();
}
通过FileInputStream
对象,我们可以使用以下方法读取文件的内容:
int data = -1;
try {
while ((data = fis.read()) != -1) {
// 处理读取到的数据
}
} catch (IOException e) {
e.printStackTrace();
}
在上述例子中,read()
方法会读取文件的下一个字节并返回其值。如果已经达到文件的末尾,它将返回-1。
除了逐字节读取外,FileInputStream
还提供了一种方式来读取特定长度的字节数据:
byte[] buffer = new byte[1024]; // 缓冲区大小
int bytesRead = 0;
try {
while ((bytesRead = fis.read(buffer)) != -1) {
// 处理读取到的字节数据
}
} catch (IOException e) {
e.printStackTrace();
}
在上述代码中,read(byte[] buffer)
方法会尝试将最多 buffer.length
个字节读入到缓冲区中,并返回实际读取的字节数。如果已经达到文件的末尾,它将返回-1。
为了释放系统资源,使用完毕后应该及时关闭FileInputStream
。可以通过调用close()
方法来关闭流:
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
通常,为了确保关闭操作的执行,我们可以在finally块中关闭流。从Java7开始,我们还可以通过try-with-resources
语法自动关闭流:
try (FileInputStream fis = new FileInputStream(file)) {
// 使用fis进行文件读取操作
} catch (IOException e) {
e.printStackTrace();
}
以上是关于FileInputStream
的基本介绍和使用方法的说明。通过该类,您可以方便地从文件中读取数据,并进行相应的处理。