Java 讀取二進位制檔案
-
在 Java 中使用
FileInputStream
讀取二進位制檔案 -
在 Java 中使用
BufferedInputStream
讀取二進位制檔案 -
在 Java 中使用
InputStreamReader
讀取二進位制檔案
嘗試在軟體中開啟二進位制檔案可能會很困難,但我們可以使用 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 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