DataOutputStream类是Java.io包中的一个重要类,它用于将基本数据类型(如int、float、long等)和字符串写入输出流中。这个类提供了方便的方法来处理不同类型的数据,并且确保这些数据可以被DataInputStream类以与平台无关的方式读取。以下是关于DataOutputStream类的详细介绍,包括它的用法、特点、方法以及在实际应用中的示例。
一、DataOutputStream类概述
1. 类定义
DataOutputStream类是FilterOutputStream的子类,它实现了DataOutput接口。这使得DataOutputStream可以接受任何OutputStream的子类实例,并允许以适合于机器无关的方式写入原始Java数据类型。
2. 主要功能
DataOutputStream的主要功能是将原始数据类型转换为一系列字节,并写入底层输出流中。它还支持写入UTF-8编码的字符串。
3. 构造方法
DataOutputStream类只有一个构造方法:
-
DataOutputStream(OutputStream out):创建一个新的数据输出流,以将数据写入指定的底层输出流。
二、DataOutputStream类的方法
以下是DataOutputStream类的一些常用方法:
1. 写入基本数据类型
- writeBoolean(boolean v):写入一个布尔值。
- writeByte(int v):写入一个字节。
- writeShort(int v):写入一个16位的短整数。
- writeChar(int v):写入一个16位的字符。
- writeInt(int v):写入一个32位的整数。
- writeLong(long v):写入一个64位的长整数。
- writeFloat(float v):写入一个32位的浮点数。
- writeDouble(double v):写入一个64位的双精度浮点数。
2. 写入字符串
- writeBytes(String s):写入字符串中的所有字节。
- writeChars(String s):写入字符串中的所有字符。
- writeUTF(String s):写入字符串,字符串使用modified UTF-8编码。
3. 其他方法
- flush():刷新此数据输出流。
- close():关闭此数据输出流。
三、DataOutputStream类使用示例
以下是一个使用DataOutputStream类将基本数据类型和字符串写入文件的示例:
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class DataOutputStreamExample {
public static void main(String[] args) {
try {
// 创建文件输出流
FileOutputStream fos = new FileOutputStream("data.txt");
// 创建数据输出流
DataOutputStream dos = new DataOutputStream(fos);
// 写入基本数据类型
dos.writeInt(25);
dos.writeDouble(10000.0);
dos.writeBoolean(true);
dos.writeUTF("张三");
// 关闭流
dos.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们创建了一个文件输出流FileOutputStream
,并用它来构造一个DataOutputStream
。然后,我们使用DataOutputStream
的方法来写入整数、双精度浮点数、布尔值和字符串。最后,我们关闭流以释放系统资源。 假设data.txt
文件不存在,运行上述代码将创建该文件,并写入指定的数据。
四、代码运行结果
运行上述代码后,data.txt
文件的内容将如下所示(以十六进制表示):
00000000: 1b 00 00 00 40 42 0f d4 00 00 00 00 00 00 01 03
00000010: e5 5f bd e7 a1 84
解释:
-
1b 00 00 00
:整数25(32位) -
40 42 0f d4
:双精度浮点数10000.0(64位) -
00 00 00 00 00 00 01
:布尔值true(8位,实际只用了1位,其余填充0) -
03 e5 5f bd e7 a1 84
:字符串"张三"(使用UTF-8编码)