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