永发信息网

java中文件输入输出的问题

答案:2  悬赏:50  手机版
解决时间 2021-05-02 01:51
源代码: import java.io.*; class Test2{ public static void main(String[] args)throws Exception{ RandomAccessFile rfa=new RandomAccessFile("1.txt","rw"); Student s1=new Student(1,"zhangsan",99.8); Student s2=new Student(2,"lisi",95.0); Student s3=new Student(3,"wangwu",88.5); s1.putter(rfa); s2.putter(rfa); s3.putter(rfa); Student s=new Student(); rfa.seek(0); for(long i=0;i<rfa.length();i=rfa.getFilePointer()){ s.getter(rfa); System.out.println(s.num+":"+s.name+":"+s.sorce); } rfa.close(); } } class Student{ int num; double sorce; String name; Student(){ } Student(int num,String name,double sorce){ this.num=num; this.name=name; this.sorce=sorce; } public void putter(RandomAccessFile rtf) throws IOException{ rtf.writeInt(num); rtf.writeUTF(name); rtf.writeDouble(sorce); } public void getter(RandomAccessFile rtf) throws IOException{ num=rtf.readInt(); name=rtf.readUTF(); sorce=rtf.readDouble(); } } 为什么执行后还有这样的错误出来: 1:zhangsan:99.8 2:lisi:95.0 3:wangwu:88.5 Exception in thread "main" java.io.EOFException at java.io.RandomAccessFile.readUnsignedShort(RandomAccessFile.java:656) at java.io.DataInputStream.readUTF(DataInputStream.java:545) at java.io.RandomAccessFile.readUTF(RandomAccessFile.java:875) at Student.getter(Test2.java:46) at Test2.main(Test2.java:17) 麻烦哪位高手指点一下。
最佳答案
你的代码我再eclipse 3.4.2 + jdk1.5.0_21上执行没有任何问题
也没见抛出异常,是不是版本的问题?
全部回答

我用1.5.0_20试过,也没有复制出您遇到的问题。查了一下,2007年之前的Java版本,当所需要读的bytes还没有读够但就已经到了文件末端(end-of-file)的时候就会抛出EOFException。我想如果您换一下您的Java版本应该就可以避免这个问题出现。以下是Reference:

http://www.docjar.com/html/api/java/io/RandomAccessFile.java.html

47 * It is generally true of all the reading routines in this class that 48 * if end-of-file is reached before the desired number of bytes has been 49 * read, an <code>EOFException</code> (which is a kind of 50 * <code>IOException</code>) is thrown. If any byte cannot be read for 51 * any reason other than end-of-file, an <code>IOException</code> other 52 * than <code>EOFException</code> is thrown. In particular, an 53 * <code>IOException</code> may be thrown if the stream has been closed. 54 *

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蓝魔rm970 固件升级后有什么变化?
此 二 字“峩 沵 ” 念 什 么 ?知 道 德 说
求新赛季火箭赛程
怎样去掉没有快捷方式小箭头的桌面图标的阴影
实信织带这个地址在什么地方,我要处理点事
我想考公务员,想报班,齐齐哈尔有么
关于编导专业的问题
离成都理工大学最近的滑冰场在哪里?
谁认识一个叫莎莎的女孩吗
为什么QQ飞车别区都好好的,就网通卡,还会掉
上海合作组织参与过反恐吗?
新天地房价
3.2 用 ClearFont
日艺饰品配件商行地址在什么地方,想过去办事
求温馨搞笑,男主腹黑女主有点小聪明的穿越文
推荐资讯
哈尔滨创城宣传口号,哈尔滨市民正在创建全国
战网怎么修改找回密码的安全问题?
谁有novajax这个框架的源码,共享下。谢谢了
神话激活码!
有没有朋友农场进不了的,我好几天都进不去了
物理。。压强。。
谁知道襄樊到广州K935号列车途经站时刻表
电信手机怎样分享流量
在濮阳办个B2驾驶要多少钱?
使命召唤5怎么安装?
QQ牧场里面为什么不能全部买成一样的动物?
QQ堂的银石在哪里打?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?