Java DataInputStream和DataOutputStream字节流的用法(附带实例)
Java 中,DataInputStream 和 DataOutputStream 属于过滤流类,主要用于在网络中或通过文件进行基本数据类型的读写。
DataOutputStream 主要用于将基本数据类型(如 int、double、char 等)序列化为字节,然后写入输出流,DataInputStream 主要用于从输入流中读取基本数据类型。
这两个类的主要方法如表 1 和表 2 所示。
下面通过两个例子演示这两个类的具体用法。
【实例 1】通过 DataOutputStream 向文件中写入基本数据类型。创建 DataOutputStream 对象,并使用它把一个整数、一个双精度浮点数和一个字符写入“d:\output.txt”文件中。
【实例 2】通过 DataInputStream 从输入流中读取基本数据类型。创建 DataInputStream 对象,并使用它从“d:\output.txt”文件中读取整数、双精度浮点数和字符,然后将这些数据打印出来。
DataOutputStream 主要用于将基本数据类型(如 int、double、char 等)序列化为字节,然后写入输出流,DataInputStream 主要用于从输入流中读取基本数据类型。
这两个类的主要方法如表 1 和表 2 所示。
方法 | 方法说明 |
---|---|
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编码的字符串 |
方法 | 方法说明 |
---|---|
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