A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗衎 黑马帝   /  2011-8-3 23:30  /  2711 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
     
     
     
}
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

倒序浏览
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)方法返回的是读取的字节数,

评分

参与人数 1技术分 +2 收起 理由
admin + 2 这2分,正好给你个110

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-4 00:49:24
藤椅
我汗····你的分也太牛了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马