首页 > 编程笔记 > Java笔记 阅读:10

Java DataInputStream和DataOutputStream字节流的用法(附带实例)

Java 中,DataInputStream 和 DataOutputStream 属于过滤流类,主要用于在网络中或通过文件进行基本数据类型的读写。

DataOutputStream 主要用于将基本数据类型(如 int、double、char 等)序列化为字节,然后写入输出流,DataInputStream 主要用于从输入流中读取基本数据类型。

这两个类的主要方法如表 1 和表 2 所示。

表:DataInputStream 类的常用方法
方法 方法说明
int readInt() 从输入流读取int类型数据
byte readByte() 从输入流读取byte类型数据
char readChar() 从输入流读取char类型数据
long readLong() 从输入流读取long类型数据
double readDouble() 从输入流读取double类型数据
float readFloat() 从输入流读取float类型数据
boolean readBoolean() 从输入流读取boolean类型数据
String readUTF() 从输入流读取若干字节,然后转换成UTF-8编码的字符串

表 2 DataOutputStream 类的常用方法
方法 方法说明
void writeInt() 向输出流写入一个int类型的数据
void writeByte() 向输出流写入一个byte类型数据
void writeChar() 向输出流写入一个char类型数据
void writeLong() 向输出流写入一个long类型数据
void writeDouble() 向输出流写入一个double类型数据
void writeFloat() 向输出流写入一个float类型数据
boolean writeBoolean() 向输出流写入一个boolean类型数据
void writeUTF() 向输出流写入采用UTF-8字符编码的字符串

下面通过两个例子演示这两个类的具体用法。

【实例 1】通过 DataOutputStream 向文件中写入基本数据类型。创建 DataOutputStream 对象,并使用它把一个整数、一个双精度浮点数和一个字符写入“d:\output.txt”文件中。
import java.io.*;

public class DataOutputStreamExample {
    public static void main(String[] args) {
        try {
            // 创建一个文件输出流对象
            FileOutputStream fos = new FileOutputStream("d:\\output.txt");
            // 创建一个数据输出流对象,用于将基本数据类型写入输出流
            DataOutputStream dos = new DataOutputStream(fos);
            // 写入数据
            dos.writeInt(123);
            dos.writeDouble(3.14159);
            dos.writeChar('A');
            // 关闭流
            dos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
执行该程序,会在“d:\output.txt”文件中写入相应的数据。

【实例 2】通过 DataInputStream 从输入流中读取基本数据类型。创建 DataInputStream 对象,并使用它从“d:\output.txt”文件中读取整数、双精度浮点数和字符,然后将这些数据打印出来。
import java.io.*;

public class DataInputStreamExample {
    public static void main(String[] args) {
        try {
            // 创建一个文件输入流对象
            FileInputStream fis = new FileInputStream("d:\\output.txt");
            // 创建一个数据输入流对象,用于从输入流中读取基本数据类型
            DataInputStream dis = new DataInputStream(fis);
            // 读取数据
            int i = dis.readInt();
            double d = dis.readDouble();
            char c = dis.readChar();
            // 打印数据
            System.out.println("Int: " + i);
            System.out.println("Double: " + d);
            System.out.println("Char: " + c);
            // 关闭流
            dis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
程序执行结果为:

Int: 123
Double: 3.14159
Char: A

相关文章