📅  最后修改于: 2023-12-03 14:52:46.381000             🧑  作者: Mango
在Java中,可以通过一些库和工具进行二进制输入。本文将介绍在Java中进行二进制输入的几种方法。
Java中的InputStream类可以用来读取二进制数据。以下是使用InputStream实现二进制输入的代码:
import java.io.InputStream;
import java.io.FileInputStream;
public class BinaryReader {
public static void main(String[] args) {
try {
InputStream inputStream = new FileInputStream("file.bin");
int byteRead;
while ((byteRead = inputStream.read()) != -1) {
System.out.print(byteRead + " ");
}
inputStream.close();
} catch (Exception ex) {
System.out.println("Error reading file.");
}
}
}
在上面的代码中,我们将一个二进制文件(file.bin)传递给FileInputStream(用于读取文件)并将其传递给InputStream。 然后我们使用while循环来逐个读取文件中的每个字节,并在控制台上打印它们。
另一个用于二进制输入的Java类是DataInputStream。以下是使用DataInputStream实现二进制输入的代码:
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BinaryReader {
public static void main(String[] args) {
try {
DataInputStream dataInputStream = new DataInputStream(new FileInputStream("file.bin"));
byte[] byteArray = new byte[1024];
int totalBytesRead = 0;
int bytesRead;
while ((bytesRead = dataInputStream.read(byteArray, totalBytesRead, byteArray.length - totalBytesRead)) != -1) {
totalBytesRead += bytesRead;
}
dataInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用DataInputStream来读取二进制文件。我们创建了一个byteArray作为缓冲区,使用while循环在byteArray中存储从DataInputStream读取的字节,直到读取所有字节为止。
在Java中,可以使用Java NIO的ByteBuffer来读取二进制数据。以下是使用ByteBuffer实现二进制输入的代码:
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class BinaryReader {
public static void main(String[] args) {
try (RandomAccessFile file = new RandomAccessFile("file.bin", "r")) {
FileChannel fileChannel = file.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
ByteBuffer tempBuffer = ByteBuffer.allocate(1024);
int bytesRead = 0;
while (bytesRead != -1) {
bytesRead = fileChannel.read(buffer);
buffer.flip();
while (buffer.hasRemaining()) {
byte b = buffer.get();
// Do something with the byte
}
buffer.clear();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用Java NIO的ByteBuffer和FileChannel来读取二进制文件。我们使用RandomAccessFile来打开二进制文件。我们创建了一个buffer(缓冲区)来缓存文件中的字节,使用while循环逐个读取每个缓冲区中的字节,并对其进行处理。
以上是在Java中进行二进制输入的三种方法。在选择使用哪种方法时,请考虑文件大小、性能和其他方面的要求。