日期:2014-05-20  浏览次数:20820 次

关于io的read方法的一个问题

import java.io.*;

/**
 * Description:
 * <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class RandomAccessFileTest
{
public static void main(String[] args) 
{
RandomAccessFile raf = null;
try
{
//以只读方式打开一个RandomAccessFile对象
raf = new RandomAccessFile("RandomAccessFileTest.java" , "r");
//获取RandomAccessFile对象文件指针的位置,初始位置是0
System.out.println("RandomAccessFile的文件指针的初始位置:" 
+ raf.getFilePointer());
//移动raf的文件记录指针的位置
raf.seek(300);
byte[] bbuf = new byte[1024];
//用于保存实际读取的字节数
int hasRead = 0;
//使用循环来重复“取水”过程
while ((hasRead = raf.read(bbuf)) > 0 )
{
//取出“竹筒”中水滴(字节),将字节数组转换成字符串输出!
System.out.print(new String(bbuf , 0 , hasRead ));
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (raf != null)
{
raf.close();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}

}
}

关于这段程序
while ((hasRead = raf.read(bbuf)) > 0 )
{
//取出“竹筒”中水滴(字节),将字节数组转换成字符串输出!
System.out.print(new String(bbuf , 0 , hasRead ));
}
我想知道raf的read是怎么推进继续往下读文件的呢,没看到显示的推进。raf的问题,不是while。
java

------解决方案--------------------
标记读取到流的位置
------解决方案--------------------
读指针在每次读取之后会向后移的,指向下一个要读取的位置。
------解决方案--------------------
raf会自动往下走的,如果想深究,请看源码