/*
需求:使用RandomAccessFile实现一下要求:
      1 存取基本数据类型
      2 随机读取某段位置的内容(一般内容都有规律)
      3 随即在某段位置上写一段数据
      4 修改某一段位置的内容
      5 使用其中的读写模式参数创建文件
思路:5 构造函数告诉我们,RandomAccessFile只能接收文件类型的参数
        其中文件类型可以是文件对象,也可以是字符串表示的文件名;
        同时当传入的读写模式参数为只读时,当文件存在时,不会创建,只会读取,
        当文件不存在时,抛出异常;
        当传入的读写模式参数为读写时,文件不存在则创建文件对象,存在也不会覆盖该文件
        readInt()读取一个字节内容
        seek(8);将文件指针指向角标为8的位置;
        
步骤:
*/
package randomaccessfile;
import java.io.*;
class RandomAccessFileTest
{
public static void main(String []args)throws IOException
{
writeFile();
}
public static void writeFile()throws IOException
{
RandomAccessFile raf=new RandomAccessFile("random.txt","rw");
raf.seek(8);
raf.write("李四".getBytes());
raf.writeInt(23);
raf.seek(8);
byte[] buf=new byte[4];
raf.read(buf);//这里不是要有个int型参数来接受返回值吗?没有怎么也可以编译通过啊,求解释!
String name=new String(buf);
System.out.println(name+p);
System.out.println(raf.readInt());
raf.close();

}
}
问题在注释read方法的返回值

解决方案 »

  1.   

    方法的返回值不一定要接受的,不接受编译不会报错。
    但你这里最好要接收了判断下,你看APIread的返回:
    读入缓冲区的总字节数,如果由于已到达此文件的末尾而不再有数据,则返回 -1。也就是说,
    1)你传得buf不一定被写满(4个字节)
    2)可能已到尾部,返回是-1。例如其他方法。
    File的delete。也有返回值,返回删除成功与否。
    如果你只是想删除,不管他删成功否,就可以完全不接受它的返回值。
    其实有返回值的情况,最好查看API文档后,再决定。
    对你有用的,那么接受,再做处理。 对你功能上没有影响的可以不接受。