下面这段程序运行后显示字符串索引越界,怎么改呢?

importjava.io.*;publicclassRandomAccessFileDemo{publicstaticvoidmain(String[]args){Ra... import java.io.*;
public class RandomAccessFileDemo{
public static void main(String[] args){
RandomAccessFile raf=null;
try
{
//以随机访问方式读写本源程序文件
raf=new RandomAccessFile("HelloWorld.java","rw");
System.out.println("执行前文件指针的位置为:"+raf.getFilePointer());
byte[] buf=new byte[20];
int hasRead=0;
//循环读取文件
while ((hasRead=raf.read(buf))>0);
{
System.out.print(new String(buf,0,hasRead));
}
System.out.println("执行前文件指针的位置为:"+raf.getFilePointer());
System.out.println("文件的长度为:"+raf.length());
//将文件指针移向文件的末尾
raf.seek(raf.length());
//在文件末尾追回下面的字符串
raf.write("//这是追加的内容".getBytes());
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
//关闭流
try
{
if(raf!=null)
raf.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
展开
 我来答
Irreappearable
2012-04-14 · TA获得超过4956个赞
知道大有可为答主
回答量:1423
采纳率:25%
帮助的人:3134万
展开全部
while ((hasRead=raf.read(buf))>0); 后面多了一个分号,使得你的while不做任何事情,而后面的System.out.print(new String(buf,0,hasRead));则一定会执行一次,而且这时候因为while已经退出,hasRead必然是负数,所以一定会抛错。
更多追问追答
追问
那应该怎么改呢?
追答
你多了分号所以while执行的不是你要执行的块,所以去掉分号啊....
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式