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
)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。