PostTruth 2015-12-25 03:13 采纳率: 50%
浏览 9324
已采纳

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)

  • 写回答

6条回答 默认 最新

  • overridemylife 2017-06-17 15:18
    关注

    乱码是因为记事本的编码 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()读取,就没问题了。_

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料