请求大佬支援!数据流读写文件有误

图片说明

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