DataOutputStream 是用于以机器无关二进制格式写入基本数据类型的 Java 类,需包装底层 OutputStream;提供 writeBoolean、writeInt 等专用方法,确保跨平台一致性;必须与 DataInputStream 配对按序读写,且推荐用 try-with-resources 管理资源。

DataOutputStream 是 Java 中用于以**与机器无关的二进制格式**写入基本数据类型(如 int、double、boolean 等)的工具类。它必须包装一个底层的 OutputStream(比如 FileOutputStream 或 ByteArrayOutputStream),不能直接创建实例。
1. 创建 DataOutputStream 实例
需要传入一个已打开的字节输出流:
FileOutputStream fos = new FileOutputStream("data.bin");
DataOutputStream dos = new DataOutputStream(fos);
// 或者用 try-with-resources 自动关闭
try (FileOutputStream fos = new FileOutputStream("data.bin");
DataOutputStream dos = new DataOutputStream(fos)) {
// 写入操作
}
2. 使用专用方法写入基本类型
每个基本类型都有对应的方法,确保跨平台读取时字节序和大小一致:
-
dos.writeBoolean(true)→ 写入 1 字节(0x01或0x00) -
dos.writeByte(65)→ 写入 1 字节(0x41) -
dos.writeShort(256)→ 写入 2 字节,大端序(0x01 0x00) -
dos.writeInt(1000)→ 写入 4 字节大端序(0x00 0x00 0x03 0xE8) -
dos.writeLong(1234567890123L)→ 写入 8 字节大端序 -
dos.writeFloat(3.14f)→ 写入 4 字节 IEEE 754 格式 -
dos.writeDouble(2.71828)→ 写入 8 字节 IEEE 754 格式 -
dos.writeUTF("Hello")→ 先写 2 字节长度,再写 Modified UTF-8 编码字节
3. 注意事项
写入的数据是二进制,不能用文本编辑器直接查看;必须用 DataInputStream 按相同顺序和类型读取,否则会出错:
- 写入顺序必须和读取顺序严格一致(例如先
writeInt再writeDouble,读时也要先readInt再readDouble) - 不要混用
write()(继承自 OutputStream)写原始字节和专用方法,容易破坏数据边界 -
writeUTF()和readUTF()配对使用,不等价于writeBytes()或String.getBytes() - 记得调用
close()或使用 try-with-resources,确保缓冲区刷新到底层流
4. 完整示例:写入混合数据
将一条用户记录(ID、姓名、分数)写入文件:
try (DataOutputStream dos = new DataOutputStream(
new FileOutputStream("user.dat"))) {
dos.writeInt(123); // ID: int
dos.writeUTF("Alice"); // 姓名: UTF字符串
dos.writeDouble(95.5); // 分数: double
} catch (IOException e) {
e.printStackTrace();
}
后续可用 DataInputStream 按相同顺序读取:readInt() → readUTF() → readDouble()。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











