dataoutputstream 是 java 中以固定字节长度、大端序二进制格式写入基本数据类型的工具类,需包装 outputstream(如 fileoutputstream),支持 writeint、writedouble、writeboolean、writeutf 等方法,生成的文件须用 datainputstream 严格按序读取。

DataOutputStream 是 Java 中用于将基本数据类型(如 int、double、boolean 等)以**固定字节长度的二进制格式**写入输出流的工具类,常配合 FileOutputStream 使用,确保跨平台读取时数据格式一致(比如 int 总是 4 字节,大端序)。
核心用法:包装底层字节流
它本身不直接操作文件,必须包裹一个 OutputStream(通常是 FileOutputStream),再调用对应 writeXXX() 方法:
- writeInt(123) → 写入 4 字节的 int(高位在前,即 big-endian)
- writeDouble(3.14) → 写入 8 字节的 IEEE 754 双精度浮点数
- writeBoolean(true) → 写入 1 字节(0x00 或 0x01)
- writeUTF("你好") → 按 modified UTF-8 编码写入字符串(含长度前缀)
典型写入示例(带异常处理)
以下代码将多种基本类型顺序写入 binary.dat 文件:
try (FileOutputStream fos = new FileOutputStream("binary.dat");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeInt(42); // 4 字节
dos.writeDouble(3.1415926); // 8 字节
dos.writeBoolean(false); // 1 字节
dos.writeUTF("Hello"); // 先写 2 字节长度,再写 UTF 编码字节
} catch (IOException e) {
e.printStackTrace();
}
生成的文件内容是严格按调用顺序拼接的原始字节,无分隔符、无换行,适合用 DataInputStream 精确反向读取。
注意字节序和兼容性
DataOutputStream 固定使用大端序(Big-Endian),这是 Java 标准,也是网络字节序。这意味着:
- int 值 0x12345678 写出为字节序列:0x12 0x34 0x56 0x78(从高到低)
- 读取时必须用 DataInputStream,且顺序、类型、数量必须与写入完全一致,否则解析错乱
- 不能用文本编辑器打开查看——它是纯二进制,非可读文本
和普通 OutputStream 的区别
直接用 FileOutputStream.write(int) 只写最低字节(相当于 writeByte(b & 0xFF)),而 DataOutputStream.writeInt() 才真正写出完整 4 字节 int。若混用,会导致数据错位或截断。
不复杂但容易忽略:写完务必调用 close()(或使用 try-with-resources),否则缓冲区内容可能未刷出到文件。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











