📜  如何在Java中进行二进制输入(1)

📅  最后修改于: 2023-12-03 14:52:46.381000             🧑  作者: Mango

如何在Java中进行二进制输入

在Java中,可以通过一些库和工具进行二进制输入。本文将介绍在Java中进行二进制输入的几种方法。

基于InputStream的二进制输入

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循环来逐个读取文件中的每个字节,并在控制台上打印它们。

基于DataInputStream的二进制输入

另一个用于二进制输入的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读取的字节,直到读取所有字节为止。

基于ByteBuffer的二进制输入

在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中进行二进制输入的三种方法。在选择使用哪种方法时,请考虑文件大小、性能和其他方面的要求。