RandomAccessFile中的readUTF()报异常

soliy 2009-10-14 02:18:19
在用到方法readUTF()是为什么老是出现EOFException异常,而且也设置了seek(0)
谁能解决一下,在网上搜罗多了,不能解决,帮助帮助
...全文
259 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmbaby112 2009-10-14
  • 打赏
  • 举报
回复
关注中,期待高手。。。。
阿_布 2009-10-14
  • 打赏
  • 举报
回复
看jdk源码,RandomAccessFile的readUTF()方法是调用的DateInputStream里面的readUTF()方法。
O爱咋咋地O 2009-10-14
  • 打赏
  • 举报
回复
搞不清楚! 关注中....
lz12366007 2009-10-14
  • 打赏
  • 举报
回复
帮 顶下。。。等待高手。。。。。。。。
leonis01 2009-10-14
  • 打赏
  • 举报
回复
lz要先搞清楚writeUTF()做了什么.writeUTF()会先写入两个字节,内容是字符串转成utf-8字节数组后的长度.然后才写入数据.这样保证了可以通过readUTF()读取写入的每个单独的字符串.而不是整个字符串
justinavril 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 soliy 的回复:]
我按你的试了一下,是一样的效果,但是我想要是自己的文本时保存时用utf格式,应该是可以的,可却是不能,还是必须writeUTF在前,这个在文档中却没有提到
[/Quote]
恩 是啊 文档中没写 但是如果这个文本是用writeUTF写入的 那么就能用readUTF读出 但是保存成UTF-8的 却不行 所以我也挺纳闷的
soliy 2009-10-14
  • 打赏
  • 举报
回复
我按你的试了一下,是一样的效果,但是我想要是自己的文本时保存时用utf格式,应该是可以的,可却是不能,还是必须writeUTF在前,这个在文档中却没有提到
justinavril 2009-10-14
  • 打赏
  • 举报
回复
我看了一下 确实这个方法比较诡异 就是不管你的文本是不是UTF8编码的 用readUTF去读的话 一概是EOFException 但是如果你这个文本是空的话 用writeUTF写入的话 那么是能够读出来的 所以我觉得这个readUTF方法是必须和writeUTF方法配合使用的。请看代码:
File f = null; 
RandomAccessFile raf = null;

try{
f = new File("C:/1.txt");
raf = new RandomAccessFile(f,"rw");

String str1 = "我爱你中国";
String str2 = "\n\n\n";
String str3 = "adadasdsad";

String temp = str1 + str2 + str3;

String input = new String(temp.getBytes("UTF-8"),"UTF-8");

raf.writeUTF(input);

raf.seek(0);

String str = raf.readUTF();

System.out.println(str);
}catch(IOException e) {
e.printStackTrace();
}finally {
try {
raf.close();
} catch (Exception e) {
e.printStackTrace();
}
}

输出:
我爱你中国


adadasdsad
soliy 2009-10-14
  • 打赏
  • 举报
回复
随便写的内容,
但是是中文,
阿_布 2009-10-14
  • 打赏
  • 举报
回复
"G:/s/sky.txt"文件里面有什么内容?
soliy 2009-10-14
  • 打赏
  • 举报
回复
File f=null;
RandomAccessFile raf=null;
try{
f=new File("G:/s/sky.txt");
raf=new RandomAccessFile(f,"rw");
String str=raf.readUTF();
System.out.println(str);
}catch(IOException e)
{
e.printStackTrace();

}finally
{

try {
raf.close();
} catch (Exception e) {
}

}
就是这样写的
justinavril 2009-10-14
  • 打赏
  • 举报
回复
EOFException 就是说end of file了。是不是你读完了整个文件 没有关啊 如果还在读 就会抛这个异常

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧