❤️ 个人主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:Java 教程:从入门到精通
大家好,我是水滴~~
数据流与要是将 Java 的基础数据类型读取或写入流中,它有如下特点:
数据流是一个处理流,它必须套接在节点流之上。
数据流在读取和写入时的顺序要一致。否则,读取的数据会失真,造成乱码。
数据输出流是一个处理流,它必须套接在一个节点流之上,比如:
FileOutputStream
、ByteArrayOutputStream
等。
DataOutputStream
只有一个构造函数。
创建一个数据输出流的实例,入参是一个字节流,可以是
FileOutputStream
、ByteArrayOutputStream
等节点流实例。
DataOutputStream
继承了FilterOutputStream
,而FilterOutputStream
又继承了OutputStream
,该数据输出流拥有常规的写入操作。
数据输出流提供了一些额外的写入方法,用于写入 Java 基础数据类型的数据:
方法名 | 字节数 | 描述 |
---|---|---|
writeBoolean(boolean v) | 1 | 写入一个 boolean 类型数据 |
writeByte(int v) | 1 | 写入一个 byte 类型数据 |
writeShort(int v) | 2 | 写入一个 short 类型数据 |
writeChar(int v) | 2 | 写入一个 char 类型数据 |
writeInt(int v) | 4 | 写入一个 int 类型数据 |
writeLong(long v) | 8 | 写入一个 long 类型数据 |
writeFloat(float v) | 4 | 写入一个 float 类型数据 |
writeDouble(double v) | 8 | 写入一个 double 类型数据 |
writeUTF(String str) | / | 写入一个 String 类型数据,编码格式为 UTF-8 |
该代码使用 FileOutputStream
做为节点流,往文件中输入数据。
代码示例:
public static void write1() throws IOException {
// 创建一个文件输出流实例
FileOutputStream fos = new FileOutputStream("c:/io/12_1.txt");
// 创建一个数据输出流,并使用文件输出流作为底层流
DataOutputStream dos = new DataOutputStream(fos);
// 写入一个 boolean 型
dos.writeBoolean(true);
// 写入一个 byte 型
dos.writeByte(1);
// 写入一个 char 型
dos.writeChar('2');
// 写入一个 short 型
dos.writeShort(333);
// 写入一个 int 型
dos.writeInt(4444);
// 写入一个 long 型
dos.writeLong(55555);
// 写入一个 float 型
dos.writeFloat(666666.6f);
// 写入一个 double 型
dos.writeDouble(7777777.77);
// 写入一个 String 型,编码格式为 UTF-8
dos.writeUTF("水滴");
// 关闭流并释放资源
dos.close();
}
输出的文件不能被直接查看,内容为乱码,必须使用数据输入流读取,并且读取顺序要与写入顺序一致。
数据输入流同样是一个处理流,它也必须套接在一个节点流之上,比如:FileInputStream、ByteArrayInputStream 等。
DataInputStream
只有一个构造函数。
创建一个数据输入流的实例,入参是一个字节流,可以是
FileInputStream
、ByteArrayInputStream
等节点流实例。
DataInputStream
继承了FilterInputStream
,而FilterInputStream
又继承了InputStream
,该数据输出流拥有常规的写入操作。
数据输入流提供了一些额外的读取方法,用于读取 Java 基础数据类型的数据:
方法名 | 字节数 | 描述 |
---|---|---|
boolean readBoolean() | 1 | 读取一个 boolean 类型数据 |
byte readByte() | 1 | 读取一个 byte 类型数据 |
readShort() | 2 | 读取一个 short 类型数据 |
readChar() | 2 | 读取一个 char 类型数据 |
int readInt() | 4 | 读取一个 int 类型数据 |
long readLong() | 8 | 读取一个 long 类型数据 |
float readFloat() | 4 | 读取一个 float 类型数据 |
double readDouble() | 8 | 读取一个 double 类型数据 |
String readUTF() | / | 读取一个 String 类型数据,编码格式为 UTF-8 |
读取的数据顺序必要要与写入一致,下面代码与DataOutputStream
的代码示例顺序一致,可以正常读取。
代码示例:
public static void read1() throws IOException {
// 创建一个文件输入流,做为节点流
FileInputStream fis = new FileInputStream("c:/io/12_1.txt");
// 创建一个数据输入流,做为转换流
DataInputStream dis = new DataInputStream(fis);
// 读取一个 boolean 型
System.out.println(dis.readBoolean());
// 读取一个 byte 型
System.out.println(dis.readByte());
// 读取一个 char 型
System.out.println(dis.readChar());
// 读取一个 short 型
System.out.println(dis.readShort());
// 读取一个 int 型
System.out.println(dis.readInt());
// 读取一个 long 型
System.out.println(dis.readLong());
// 读取一个 float 型
System.out.println(dis.readFloat());
// 读取一个 double 型
System.out.println(dis.readDouble());
// 读取一个 String 型,编码格式为 UTF-8
System.out.println(dis.readUTF());
// 关闭流并释放资源
dis.close();
}
输出结果:
true
1
2
333
4444
55555
666666.6
7777777.77
水滴
🔥 【Java I/O 流】文件的操作——java.io.File 类详解
🔥 【Java I/O 流】字节输入输出流:InputStream & OutputStream
🔥 【Java I/O 流】文件字节输入输出流:FileInputStream & FileOutputStream(文件读写案例)
🔥 【Java I/O 流】字符输入输出流:Reader 和 Writer
🔥 【Java I/O 流】文件字符输入输出流:FileReader 和 FileWriter
🔥 【Java I/O 流】字节缓冲流:BufferedInputStream 和 BufferedOutputStream
🔥 【Java I/O 流】字符缓冲流:BuffreadReader 和 BufferedWriter
🔥 【Java I/O 流】字节数组流:ByteArrayInputStream 和 ByteArrayOutputStream
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》