黑马程序员技术交流社区

标题: RandomAccessFile [打印本页]

作者: 罗衎    时间: 2011-8-3 23:30
标题: RandomAccessFile
IO的视频中
RandomAccessFile中  
为什么读年龄不用指定读取的长度?
代码如下(红色标记)

package IOtest;
import java.io.*;
public class RandomAccessTest
{
public static void main(String [] args) throws Exception
{
  Employee e1=new Employee("luokan",288);
  Employee e2=new Employee("lujiayu",11);
  Employee e3=new Employee("kkaasndias",23);
  RandomAccessFile ra=new RandomAccessFile("f:\\1.txt","rw");
  ra.write(e1.name.getBytes());
  ra.writeInt(e1.age);
  ra.write(e2.name.getBytes());
  ra.writeInt(e2.age);
  ra.write(e3.name.getBytes());
  ra.writeInt(e3.age);
     ra.close();
     
    RandomAccessFile rb=new RandomAccessFile("f:\\1.txt","r");
     rb.skipBytes(12);
     String strName=null;
     byte []buf=new byte[Employee.LEN];
     int d=0;
     d=rb.read(buf);
     strName=new String(buf,0,Employee.LEN);
     System.out.println(strName.trim()+":"+rb.read());
     rb.seek(0);
     d=rb.read(buf);
     strName=new String(buf,0,Employee.LEN);
     System.out.println(strName.trim()+":"+rb.read());
     rb.skipBytes(12);
     d=rb.read(buf);
     strName=new String(buf,0,Employee.LEN);
     System.out.println(strName+":"+rb.read());
     rb.close();
     
     
     
}
}
作者: 詹季春    时间: 2011-8-3 23:57
RandomAccessFile类中read()方法的API文档

public int read()
         throws IOException从此文件中读取一个数据字节。以整数形式返回此字节,范围在 0 到 255 (0x00-0x0ff)。如果尚无输入可用,将阻塞此方法。
尽管 RandomAccessFile 不是 InputStream 的子类,但此方法的行为与 InputStream 的 InputStream.read() 方法完全一样。


返回:
下一个数据字节,如果已到达文件的末尾,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。如果已到达文件的末尾,则不抛出此异常。

--------------------------------------------------------------------------------

read
public int read(byte[] b,
                int off,
                int len)
         throws IOException将最多 len 个数据字节从此文件读入 byte 数组。在至少一个输入字节可用前,此方法一直阻塞。
尽管 RandomAccessFile 不是 InputStream 的子类,但此方法的行为与 InputStream 的 InputStream.read(byte[], int, int) 方法完全一样。


参数:
b - 读入数据的缓冲区。
off - 写入数据的数组 b 中的初始偏移量。
len - 读取的最多字节数。
返回:
读入缓冲区的总字节数,如果由于已到达文件的末尾而不再有数据,则返回 -1。
--------------------------------------------------------------------------------

从上可以看出read()返回的是读取的一个数据字节,对于读取这个程序中的年龄足以,而且对于read(buff , 0 , len)方法返回的是读取的字节数,
作者: 匿名    时间: 2011-8-4 00:49
我汗····你的分也太牛了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2