Can';在java IO中读取数据输入流

Can';在java IO中读取数据输入流,java,io,file-handling,Java,Io,File Handling,大家好,我正在练习java数据输入输出流。但我不知道如何解决这个问题,我可以将数据输入流写入文件,但无法读取它 这是我的密码: public static void readDataIOStream(){ DataInputStream dataIn = null; int i = 10; double d = 1023.56; boolean b = true; try

大家好,我正在练习java数据输入输出流。但我不知道如何解决这个问题,我可以将数据输入流写入文件,但无法读取它

这是我的密码:

public static void readDataIOStream(){
            DataInputStream dataIn = null;

            int i = 10;
            double d = 1023.56;
            boolean b = true;

            try {
                dataIn = new DataInputStream(
                        new FileInputStream("test.txt"));

                i = dataIn.readInt();
                System.out.println("Reading " + i);
                d = dataIn.readDouble();
                System.out.println("Reading " + d);
                b = dataIn.readBoolean();
                System.out.println("Reading " + b);
                d = dataIn.readDouble();
                System.out.println("Reading " + d);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }try {
                dataIn.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        public static void writeDataIOStream(){
            DataOutputStream dataOut = null;

            int i = 10;
            double d = 1023.56;
            boolean b = true;

            try {
                dataOut = new DataOutputStream(new FileOutputStream("test.txt"));
                System.out.println("Writing " + i);
                dataOut.write(i);
                System.out.println("Writing " + d);
                dataOut.writeDouble(d);
                System.out.println("Writing " + b);
                dataOut.writeBoolean(b);
                System.out.println("Writing " + 12.2 * 7.4);
                dataOut.writeDouble(12.2 * 7.4);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    dataOut.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
下面是错误:

 java.io.EOFException
    at java.io.DataInputStream.readFully(Unknown Source)
    at java.io.DataInputStream.readLong(Unknown Source)
    at java.io.DataInputStream.readDouble(Unknown Source)
    at bytestream.DataIOStream.readDataIOStream(DataIOStream.java:108)
    at bytestream.DataIOStream.main(DataIOStream.java:16)
Writing 10
Writing 1023.56
Writing true
Writing 90.28
Reading 172003324
Reading 8.029891292620447E283
Reading true
请帮助我为什么无法读取数据输入流。写入(i)只写入一个字节。然而,您正在读取一个
int
do
i=dataIn.readInt()
,它是4个字节

因此,当尝试读取最后一个元素(双字节)时,流中只有5个字节,而它尝试读取8个字节(双字节的长度),因此出现异常


由于您要写入/读取
int
,因此需要调用
dataOut.writeInt(i)
而不是
dataOut.write(i)
,您缺少的是
dataOut.write(i)