在Java中,二进制文件读写涉及使用Input/OutputStream或Reader/Writer类的派生类。以下是一些常用的二进制文件读写操作:
1. 读取二进制文件:
try (FileInputStream fileInput = new FileInputStream("input.bin")) { byte[] buffer = new byte[4096]; // 缓冲区大小 int bytesRead; // 已读取的字节数 while ((bytesRead = fileInput.read(buffer)) != -1) { // 对缓冲区中的数据进行处理 } } catch (IOException e) { e.printStackTrace(); }
2. 写入二进制文件:
try (FileOutputStream fileOutput = new FileOutputStream("output.bin")) { byte[] data = {0x01, 0x02, 0x03}; // 要写入的二进制数据 fileOutput.write(data); } catch (IOException e) { e.printStackTrace(); }
3. 使用DataInputStream和DataOutputStream读写基本数据类型和字符串:
try (DataInputStream dataInput = new DataInputStream(new FileInputStream("input.bin"))) { int intValue = dataInput.readInt(); // 读取整数 double doubleValue = dataInput.readDouble(); // 读取浮点数 String stringValue = dataInput.readUTF(); // 读取字符串 } catch (IOException e) { e.printStackTrace(); } try (DataOutputStream dataOutput = new DataOutputStream(new FileOutputStream("output.bin"))) { int intValue = 42; double doubleValue = 3.14; String stringValue = "Hello"; dataOutput.writeInt(intValue); // 写入整数 dataOutput.writeDouble(doubleValue); // 写入浮点数 dataOutput.writeUTF(stringValue); // 写入字符串 } catch (IOException e) { e.printStackTrace(); }
4. 使用RandomAccessFile进行随机访问:
try (RandomAccessFile file = new RandomAccessFile("data.bin", "rw")) { long position = 10; // 要读写的位置 file.seek(position); // 将文件指针移动到指定位置 int value = file.readInt(); // 读取整数 file.seek(position); // 再次将文件指针移动到指定位置 file.writeInt(value + 1); // 将新值写入文件 } catch (IOException e) { e.printStackTrace(); }
这些例子是常见的二进制文件读写操作。你可以根据实际需求选择合适的读写方式。