Java的DataOutputStream介绍与使用
DataOutputStream 是 Java 中用于以二进制形式将数据写入输出流的类。它实现了 DataOutput 接口,可以方便地写入各种基本数据类型和字符串。
在本文中,我们将介绍 DataOutputStream 的使用方法,并提供一些示例代码来帮助读者更好地理解它的用法。
1. DataOutputStream 类的概述
DataOutputStream 类位于 java.io 包中,是一个过滤流(FilterStream),它提供了对基本数据类型的高效写入功能。
DataOutputStream 继承自 FilterOutputStream 类,它本身是一个装饰器类(Decorator),可以将底层的输出流包装成一个数据输出流。
该类的主要方法有:
- writeBoolean(boolean v):写入一个布尔值。
- writeByte(int v):写入一个字节。
- writeShort(int v):写入一个短整型值。
- writeInt(int v):写入一个整型值。
- writeLong(long v):写入一个长整型值。
- writeFloat(float v):写入一个浮点型值。
- writeDouble(double v):写入一个双精度浮点型值。
- writeChars(String s):写入一个字符串。
- writeUTF(String str):写入一个UTF-8 编码字符串。
除了这些基本数据类型之外,DataOutputStream 还提供了其他一些方法来写入字符、字节数组等数据类型。
2. DataOutputStream 的示例代码
接下来,我们将通过一些示例代码来演示如何使用 DataOutputStream 类。
示例 1:写入基本数据类型
下面的示例代码展示了如何使用 DataOutputStream 类来将基本数据类型写入输出流:
import java.io.*;
public class DataOutputStreamExample {
public static void main(String[] args) {
try {
FileOutputStream fileOutputStream = new FileOutputStream("data.txt");
DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
int intValue = 42;
float floatValue = 3.14f;
String stringValue = "Hello, World!";
dataOutputStream.writeInt(intValue);
dataOutputStream.writeFloat(floatValue);
dataOutputStream.writeUTF(stringValue);
dataOutputStream.close();
System.out.println("数据写入完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上述示例中,我们创建了一个 FileOutputStream 对象来表示要写入的文件,然后将其包装成 DataOutputStream 对象。接下来,我们使用 DataOutputStream 的方法将一个整型值、一个浮点型值和一个字符串依次写入输出流。
最后,我们调用 close()
方法关闭输出流,并打印一条完成的消息。
示例 2:写入字节数组
DataOutputStream 还提供了 write(byte[] b, int off, int len)
方法来写入字节数组的一部分。下面的示例代码展示了如何使用该方法:
import java.io.*;
public class DataOutputStreamExample {
public static void main(String[] args) {
try {
FileOutputStream fileOutputStream = new FileOutputStream("data.txt");
DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
byte[] byteArray = {1, 2, 3, 4, 5};
dataOutputStream.write(byteArray, 1, 3);
dataOutputStream.close();
System.out.println("数据写入完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上述示例中,我们创建了一个字节数组 byteArray
,然后调用 write(byte[] b, int off, int len)
方法将字节数组中从索引 1 开始的 3 个元素写入输出流。
示例 3:使用 DataOutputStream 读取数据
DataOutputStream 的姊妹类 DataInputStream 提供了读取二进制数据的功能。下面的示例代码展示了如何使用 DataInputStream 读取使用 DataOutputStream 写入的数据:
import java.io.*;
public class DataInputStreamExample {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("data.txt");
DataInputStream dataInputStream = new DataInputStream(fileInputStream);
int intValue = dataInputStream.readInt();
float floatValue = dataInputStream.readFloat();
String stringValue = dataInputStream.readUTF();
dataInputStream.close();
System.out.println("读取的整数值:" + intValue);
System.out.println("读取的浮点数值:" + floatValue);
System.out.println("读取的字符串值:" + stringValue);
}