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);
        }