readUTF()使用报 java.io.EOFException异常

今天在编程的时候,用到了DataInPutStream类的readUTF()方法时报了个异常,查了好多资料也不能解决,求大神指点啊.高分悬赏.

 package IO流;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataTest {

    /**
     * 数据输入输出流
     * 
     */
    public static void main(String[] args) throws IOException {
        //向指定文件中写入数据
        //打开文件输出流
        FileOutputStream fos=new FileOutputStream("G://word.txt");
        //将此输出流链接到指定基础输出流DataOutPutStream
        DataOutputStream dos=new DataOutputStream(fos);
        //写入数据:
        dos.writeBytes("我是大禹!");//用此方法写入的数据用记事本打开是乱码
        dos.writeChars("我治水!");//用此方法写入的数据用记事本打开是乱码
        dos.writeUTF("你智障吗?");
        //关闭流
        fos.close();
        //从文件中读取数据
        //首先打开文件输入流
        FileInputStream fis=new FileInputStream("G://word.txt");
        //将此输入流连接到基本数据输入流DataInPutStream
        DataInputStream dis=new DataInputStream(fis);
        //开始读取数据啦
//      String s=dis.readUTF();
        System.out.println(dis.readUTF());
        dis.close();







    }

}

异常信息:
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:180)
at java.io.DataInputStream.readUTF(DataInputStream.java:592)
at java.io.DataInputStream.readUTF(DataInputStream.java:547)
at IO流.DataTest.main(DataTest.java:35)

乱码是因为记事本的编码 GB2312、GBK、GB18030、Big5、Shift_JIS问题引起的,读写编码方式应一致,记事本能存储文本类型的。
你这样子是用了几种编码方式往文件里写东西了。
dos.writeBytes(),按照1个字节方式写入 123abc英文是没问题的,至少写入能显示出来123abc,但如果你把汉字写入就会出现乱码了
dos.writeChars(),char占2个字节,按照2个字节的方式写入 123abc能显示出来,但是记事本里会变这样子 1 2 3 a b c,如果中文则会乱码

要对记事本读写汉字,你把前面两个写入方法注释后,只用writeUTF()写入,读取时用readUTF()读取,就没问题了。_

直接fileinputstream读取呗

虽然我不清楚DataOutputStream 这个类的,但是你读取数据的时候应该加个while循环判断是否读到尾部了

要按照写入数据的顺序读取,第一个读取应该是读取readBytes,不该是utf

顶一个,第一位大佬的回答让我找到了我的问题所在:
我在序列化一个int值的时候,使用write(a),因为使用时看到write可以直接写int类型;
但我在反序列化时,却使用了readInt(a)来读,两者类型不匹配导致我报了这个错。

java.io.EOFException这个表示读到了文件尾,没数据可读了