有关java中RandomAccessFile的问题

在java中的随机读写文件类RandomAccessFile中有两个向文件中写入字符串的方法,一个是writeChars另一个是writeUTF。1:当用这两种方法向文件... 在java中的随机读写文件类RandomAccessFile中有两个向文件中写入字符串的方法,一个是writeChars另一个是writeUTF。
1:当用这两种方法向文件写入的时候,文件指针(file pointer)的移动情况一样吗(即同样在空的文件中插入“你好”后getFilePinter()的值一样吗)?
2:在写等长记录格式的文件时,用其中的哪一种最好,还是两者皆可?
3:在用writeChars()写入,能否用readUTF()读取,用writeUTF写入能否用
readChar()读取?
请高手给予帮助,谢谢了。
问题的第二点的“在写等长记录格式的文件”指的是每次写入的内容的长度是固定的,比如都是100字节,以方便定位读取。

问题的第二点的意思是;在向文件中写入的时候,不同情况下用哪种方法最好。
展开
 我来答
pujia12345
2009-09-26 · TA获得超过3680个赞
知道大有可为答主
回答量:3456
采纳率:0%
帮助的人:2976万
展开全部
writeChar
public final void writeChar(int v)
throws IOException按双字节值将 char 写入该文件,先写高字节。写入从文件指针的当前位置开始。

writeChars
public final void writeChars(String s)
throws IOException按字符序列将一个字符串写入该文件。每个字符均写入数据输出流,类似于使用 writeChar 方法。写入从文件指针的当前位置开始。

readUTF
public final String readUTF()
throws IOException从此文件读取一个字符串。该字符串已使用 UTF-8 修改版格式进行编码。
从当前文件指针开始读取前两个字节,类似于使用 readUnsignedShort。此值给出已编码字符串中随后的字节数,而不是结果字符串的长度。随后的字节然后解释为 UTF-8 修改版格式的字节编码字符,并转换为字符。

在读取了所有字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

写入方式不一样,不能writeChars() 使用readUTF()读

最好使用UTF格式
浮涆锐文德
2020-01-08 · TA获得超过3844个赞
知道大有可为答主
回答量:3160
采纳率:26%
帮助的人:401万
展开全部
文件结尾了还继续读文件,就导致这个错误抛出
问题在于 for(long
i=0;i<arf.length();arf.getFilePointer())
之前arf.seek(0)了,for循环会执行arf.getFilePointer()三次,第三次时就会抛这个错了。
在for循环里加上
if(i==arf.length()-1)
{break;}解决问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式