Java 讀取二進位制檔案

Sheeraz Gul 2023年10月12日
  1. 在 Java 中使用 FileInputStream 讀取二進位制檔案
  2. 在 Java 中使用 BufferedInputStream 讀取二進位制檔案
  3. 在 Java 中使用 InputStreamReader 讀取二進位制檔案
Java 讀取二進位制檔案

嘗試在軟體中開啟二進位制檔案可能會很困難,但我們可以使用 Java 讀取二進位制檔案。本教程演示了在 Java 中讀取二進位制檔案的不同方法。

在 Java 中使用 FileInputStream 讀取二進位制檔案

使用 Java 中的 FileInputStream 類,我們可以輕鬆地讀取 Java 中的二進位制檔案。

程式碼:

package Delfstack;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Read_Binary {
  public static void main(String[] args) {
    try {
      // create a reader for data file
      FileInputStream read = new FileInputStream(new File("input.dat"));

      // the variable will be used to read one byte at a time
      int byt;
      while ((byt = read.read()) != -1) {
        System.out.print((char) byt);
      }

      read.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

我們建立了一個 input.dat 二進位制檔案,然後嘗試通過 Java 讀取它。

輸出:

default: (
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Test input.dat file from Delftstack
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check = true
  check = false
)

上面的程式一次只讀取一個位元組,因此對於大型二進位制檔案可能需要更多時間。

在 Java 中使用 BufferedInputStream 讀取二進位制檔案

如上所述,FileInputStream 一次只能讀取一個位元組,讀取大檔案可能需要更多時間。為了解決這個問題,我們使用了 BufferedInputStream 類。

BufferedInputStream 類一次將一組位元組讀取到陣列緩衝區中。

程式碼:

package Delfstack;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Read_Binary {
  public static void main(String[] args) {
    try {
      int Size_Buffer = 16 * 1024; // 16kb
      // create a reader for data file
      FileInputStream read = new FileInputStream(new File("input.dat"));
      BufferedInputStream buffered_reader = new BufferedInputStream(read, Size_Buffer);

      int byt;
      while ((byt = buffered_reader.read()) != -1) {
        System.out.print((char) byt);
      }

      buffered_reader.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

預設內部緩衝區大小為 8 kb,可以通過將其作為引數傳遞給 BufferedInputStream 進行更改。

輸出:

default: (
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Test input.dat file from Delftstack
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check = true
  check = false
)

在 Java 中使用 InputStreamReader 讀取二進位制檔案

InputStreamReader 用於讀取編碼與我們的作業系統不同的二進位制檔案。二進位制檔案的編碼作為引數傳遞給 InputStreamReader

程式碼:

package Delfstack;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class Read_Binary {
  public static void main(String[] args) {
    try {
      FileInputStream read = new FileInputStream(new File("input.dat"));

      // pass the UTF_8 character encoding
      InputStreamReader stream_reader = new InputStreamReader(read, StandardCharsets.UTF_8);

      int byt;
      while ((byt = stream_reader.read()) != -1) {
        System.out.print((char) byt);
      }

      stream_reader.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上面的程式碼可以讀取具有特定編碼的二進位制檔案。將該編碼作為引數傳遞給 InputStreamReader

輸出:

default: (
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Test input.dat file from Delftstack
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check = true
  check = false
)
作者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

相關文章 - Java Binary