如何使用Java中的InputStream函数读取二进制文件?
发布时间:2023-05-22 06:49:46
Java中的InputStream函数是一个非常强大的工具,可以用于读取二进制文件。读取二进制文件比读取文本文档稍微复杂一些,因为二进制文件可能包含非文本形式的数据(如图形、声音或视频等)。对于这些二进制文件,我们必须使用InputStream函数来读取它们。
在Java中,接口InputStream被用于从输入流中读取字节。可以用它读取二进制文件、从网络套接字接收byte数据流或读取其他字节输入流。下面是如何使用Java中的InputStream函数读取二进制文件的步骤:
1. 创建FileInputStream对象。这是InputStream的子类,用于从文件中读取字节。下面的代码演示了如何创建FileInputStream对象:
String fileName = "C:/path/to/file.jpg"; // 文件路径 FileInputStream fis = new FileInputStream(fileName); //创建输入流
2. 创建字节数组。由于二进制文件可以非常大,因此 一次读取多个字节而不是一个字节。可以通过创建字节数组来实现这一点。下面的代码将创建一个大小为1024的字节数组:
byte[] buffer = new byte[1024]; // 创建字节数组
3. 使用read()方法从文件中读取字节。read()方法会尝试从输入流中读取字节,并将读取的字节数返回。如果已经到文件的末尾,则返回-1。下面的代码演示了如何使用read()方法从文件中读取字节:
int bytesRead = fis.read(buffer); // 读取字节,返回读取到的字节数
4. 处理读取到的字节。要在控制台上输出所有读取到的字节,可以使用以下代码:
while (bytesRead != -1) {
for (int i = 0; i < bytesRead; i++) {
System.out.print(buffer[i]);
}
bytesRead = fis.read(buffer);
}
5. 关闭FileInputStream。在读取完文件后,必须关闭输入流。以下是关闭输入流的代码:
fis.close();
下面是完整示例代码:
import java.io.*;
public class ReadBinaryFile {
public static void main(String[] args) throws IOException {
String fileName = "C:/path/to/file.jpg";
FileInputStream fis = null;
try {
fis = new FileInputStream(fileName);
byte[] buffer = new byte[1024];
int bytesRead = fis.read(buffer);
while (bytesRead != -1) {
for (int i = 0; i < bytesRead; i++) {
System.out.print(buffer[i]);
}
bytesRead = fis.read(buffer);
}
} catch (IOException ex) {
System.out.println("Error reading file!");
} finally {
if (fis != null) {
fis.close();
}
}
}
}
可以通过运行此程序来测试读取二进制文件的功能。这个程序将从路径C:/path/to/file.jpg中读取字节并将其输出到控制台。在实际开发中,可以根据需要修改代码以适应不同的读取需求。
