欢迎访问宙启技术站
智能推送

如何使用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中读取字节并将其输出到控制台。在实际开发中,可以根据需要修改代码以适应不同的读取需求。