RandomAccessFile

        RandomAccessFile为Java输入/输出流中最为丰富的文件内容访问类,这个类的实例支持读取和写入随机访问文件。随机访问文件的行为类似于存储在文件系统中的大量字节数组。在隐含数组中有一种游标或索引,称为文件指针;输入操作从文件指针开始读取字节,并将文件指针向前推进到读取字节之后。如果随机访问文件是在读/写模式下创建的,那么输出操作也是可用的;输出操作从文件指针开始写入字节,并将文件指针提前到写入的字节之后。在隐含数组的当前端之前写入的输出操作将导致数组的扩展。文件指针可以由getFilePointer方法读取,并由seek方法设置。

        这个类中的所有读取例程通常都是正确的,如果在读取所需的字节数之前达到了文件结束,则抛出EOFException(这是一种IOException)。如果任何字节除了文件结尾以外的原因都不能读取,则抛出除EOFException之外的IOException。特别是,如果流已经关闭,可能会抛出一个IOException。


Constructor Summary(构造函数总结):

        →RandomAccessFile(File file,String model):以File实例为参数创建一个随机访问文件流。

        →RandomAccessFile(String name,String model):以指定名称创建一个随机访问文件流。

        关于model参数:

                            "r"        :以只读方式打开文件,试图写入将会抛出异常。

                            "rw"     :以读取和写入的方式打开文件,如果该文件不存在,将会创建一个文件。

                            "rws"   :以读取和写入的方式打开文件,相对于'rw"模式,对于文件的内容和元数据的更新都要同步写入到底层储存设备。

                            "rwd"    :以读取和写入的方式打开文件,相对于"rw"模式,对于文件的内容的更新都要同步写入到底层储存设备。


Common Method Summary(常用方法总结):

        →long    length():返回此文件的大小。

        →void    setLength(long newLength):设置此文件的大小为newLength值。

        →long    getFilePointer():返回文件记录指针的当前位置。

        →void    seek(long pos):将文件记录指针设定到pos位置。



代码举例:


只读


写入

注意:RandomAccessFile并不支持在内容之间写入数据,所以每次运行上面的程序的时候,我们需要将记录指针移到末尾,否则会覆盖掉原内容。所以我们可以设置一个缓冲区来解决:


向指定位置插入内容



你可能感兴趣的:(RandomAccessFile)