package com.sxt.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/*
* 数据流
* 1.写出后读取
* 2.读取的顺序与写出的顺序保持一致
* DataOutputStream DataInputStream
* */
public class DataTests {
public static void main(String[] args) throws IOException {
//写出
OutputStream bos = new FileOutputStream(new File("abc.txt"));
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(bos));
//操作数据类型+数据
dos.writeUTF("编码辛酸泪,谁解其中味");
dos.writeInt(18);
dos.writeBoolean(true);
dos.writeChar('a');
dos.flush();
String line;
while((line=(bos.readLine())!=null) {
}
//读取
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(line)));
//顺序与写出顺序一致
String msg = dis.readUTF();
int age = dis.readInt();
Boolean flag = dis.readBoolean();
char ch = dis.readChar();
System.out.println(age);
}
}
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(line)));
读取的操作用法错了,应该用与写入时相同的文件名称,而不是 line ,还有编译错误,需要去掉那个 while 循环。修改代码为:
public static void main(String[] args) throws IOException {
//写出
OutputStream bos = new FileOutputStream(new File("abc.txt"));
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(bos));
//操作数据类型+数据
dos.writeUTF("编码辛酸泪,谁解其中味");
dos.writeInt(18);
dos.writeBoolean(true);
dos.writeChar('a');
dos.flush();
String line = "abc.txt";
//读取
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(line)));
//顺序与写出顺序一致
String msg = dis.readUTF();
int age = dis.readInt();
Boolean flag = dis.readBoolean();
char ch = dis.readChar();
System.out.println(msg);
System.out.println(age);
System.out.println(flag);
System.out.println(ch);
}
运行结果:
编码辛酸泪,谁解其中味
18
true
a