您的位置:首页 > 博客中心 > 数据库 >

类 RandomAccessFile 在文件任意位置进行读写

时间:2022-03-10 18:16

public class RandomAccessFile extends  implements , , 

此类同时实现了DataOutput和DataInput接口,此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer()方法读取,并通过 seek() 方法设置。

通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。 

两个构造方法

public RandomAccessFile( name, mode) throws 
public RandomAccessFile( file,  mode) throws 

mode 参数指定用以打开文件的访问模式。允许的值及其含意为:

含意

"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 。
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
"rwd"   打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。 

"rwd" 模式可用于减少执行的 I/O 操作数量。使用 "rwd" 仅要求更新要写入存储的文件的内容;使用 "rws" 要求更新要写入的文件内容及其元数据,这通常要求至少一个以上的低级别 I/O 操作。 

import java.io.IOException;
import java.io.RandomAccessFile;


public class WriteTest {
    public static void main(String[] args) throws IOException {
        write();
        read();
    }

    private static void write() throws IOException{
        RandomAccessFile rf = new RandomAccessFile("c:\\save.txt","rw");
        rf.writeByte(‘1‘);
        rf.writeChars("android");
        rf.writeUTF("博客园");
        rf.close();
    }
    
    private static void read() throws IOException{
        RandomAccessFile rf = new RandomAccessFile("c:\\save.txt","r");
        //可指定读取位置
        rf.seek(2);
        System.out.println((char)rf.read());
        rf.close();
    }
}

通过RandomAccessFile类可以以追加的方式写文件。

类 RandomAccessFile 在文件任意位置进行读写,布布扣,bubuko.com

热门排行

今日推荐

热门手游