RandomAccessFile中的readUTF()报异常 在用到方法readUTF()是为什么老是出现EOFException异常,而且也设置了seek(0)谁能解决一下,在网上搜罗多了,不能解决,帮助帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 EOFException 就是说end of file了。是不是你读完了整个文件 没有关啊 如果还在读 就会抛这个异常 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) { } }就是这样写的 "G:/s/sky.txt"文件里面有什么内容? 我看了一下 确实这个方法比较诡异 就是不管你的文本是不是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 我按你的试了一下,是一样的效果,但是我想要是自己的文本时保存时用utf格式,应该是可以的,可却是不能,还是必须writeUTF在前,这个在文档中却没有提到 恩 是啊 文档中没写 但是如果这个文本是用writeUTF写入的 那么就能用readUTF读出 但是保存成UTF-8的 却不行 所以我也挺纳闷的 lz要先搞清楚writeUTF()做了什么.writeUTF()会先写入两个字节,内容是字符串转成utf-8字节数组后的长度.然后才写入数据.这样保证了可以通过readUTF()读取写入的每个单独的字符串.而不是整个字符串 看jdk源码,RandomAccessFile的readUTF()方法是调用的DateInputStream里面的readUTF()方法。 导出excel自动分行,列宽,行高设定的问题 word,excel,ppt文件转成pdf文件java用什么开源程序比较好?? 文件路径 JTable的问题 动态字符串的替换 想做个响应的选择匡,菜鸟求~~ 请看过core java的朋友指点一下,谢谢! 类型转换 各位能就“接口”这个概念,多谈一点吗? 报错 对象的克隆问题 java游戏的问题
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) {
}
}
就是这样写的
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