DataOutputStream和DataInputStream

DataOutputStream和DataInputStream

一、DataOutPutStream
1.1 定义

DataOutputStream 是 Java 中的一个类,用于将基本数据类型和字符串数据写入输出流。它是 OutputStream 的子类,因此可以用于将数据写入各种输出目标,如文件、网络连接等。

1.2 DataOutputStream 的主要特点和用法:
  1. 写入基本数据类型DataOutputStream 提供了方法来将各种基本数据类型写入输出流,包括 intlongdoublefloatboolean 等。这使得可以直接将这些数据类型写入输出流,而无需手动进行字节转换。
  2. 写入字符串:除了基本数据类型外,DataOutputStream 也可以写入字符串数据。它提供了 writeUTF() 方法来将字符串以 UTF-8 编码写入输出流。这使得可以方便地将字符串数据写入输出流,并在读取时使用 DataInputStreamreadUTF() 方法来解析。
  3. 字节顺序DataOutputStream 会根据当前平台的字节顺序将数据写入输出流。在大多数情况下,Java 使用的是网络字节顺序(big-endian),但也有一些平台使用小端字节顺序。可以放心使用 DataOutputStream 来确保写入数据时使用正确的字节顺序。
  4. 异常处理:在使用 DataOutputStream 写入数据时,需要注意处理可能抛出的 IOException 异常。例如,在写入文件时,如果文件系统出现问题或者磁盘已满,就可能会抛出 IOException 异常。
1.3示例

以下是一个简单的示例,演示了如何使用 DataOutputStream 将数据写入文件:

import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataOutputStreamExample {
    public static void main(String[] args) {
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt"))) {
            // 写入整数
            int intValue = 42;
            dos.writeInt(intValue);

            // 写入双精度浮点数
            double doubleValue = 3.14;
            dos.writeDouble(doubleValue);

            // 写入字符串
            String stringValue = "Hello, world!";
            dos.writeUTF(stringValue);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,首先创建了一个 DataOutputStream 对象,它连接到一个名为 data.txt 的文件输出流。然后,使用 writeXXX() 方法将整数、双精度浮点数和字符串写入文件。最后,在结束时关闭输出流。

二、DataInputStream
1.1定义

DataInputStream 是 Java 中的一个类,用于从输入流中读取基本数据类型和字符串数据。它是 InputStream 的子类,因此可以用于从各种输入源(如文件、网络连接等)读取数据。

1.2 DataInputStream 的主要特点和用法:
  1. 读取基本数据类型DataInputStream 提供了方法来读取各种基本数据类型,包括 intlongdoublefloatboolean 等。这使得从输入流中读取数据时无需手动解析字节流,而是可以直接读取相应的数据类型。
  2. 读取字符串:除了基本数据类型外,DataInputStream 也可以读取字符串数据。它提供了 readUTF() 方法来读取以 UTF-8 编码的字符串。UTF-8 编码是一种变长的编码方式,可以表示几乎所有的 Unicode 字符。
  3. 字节顺序DataInputStream 会根据当前平台的字节顺序来读取数据。在大多数情况下,Java 使用的是网络字节顺序(big-endian),但也有一些平台使用小端字节顺序。可以使用 DataInputStreamreadXXX() 方法来确保读取数据时使用正确的字节顺序。
  4. 异常处理:在使用 DataInputStream 读取数据时,需要注意处理可能抛出的 EOFException 异常。该异常表示已经到达了输入流的末尾,无法继续读取更多的数据。
1.3示例

以下是一个简单的示例,演示了如何使用 DataInputStream 从文件中读取数据:
```java
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class DataInputStreamExample {
    public static void main(String[] args) {
        try (DataInputStream dis = new DataInputStream(new FileInputStream("data.txt"))) {
            // 读取整数
            int intValue = dis.readInt();
            System.out.println("Integer value: " + intValue);

            // 读取双精度浮点数
            double doubleValue = dis.readDouble();
            System.out.println("Double value: " + doubleValue);

            // 读取字符串
            String stringValue = dis.readUTF();
            System.out.println("String value: " + stringValue);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
```
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值