JavaIO 5—RandomAccessFile类的使用

    在Java中为我们提供了随机读取文件内容的类,通过RandomAccessFile类我们可以自由的读取文件中的内容。

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

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

    这个类的构造函数:public RandomAccessFile(File file,String mode)。我们可以看出来需要一个File类的实例,但是我们知道File是抽象类,所以实际上上是这个抽象类的的实现类的实例。后面还有一个读写模式,是指的我们以什么模式打开,比如“r”代表只读,“rw”代表读写等。这个实例将根据我们打开的模式进行操作。

         下面我们看一个例子:

JavaIO 5—RandomAccessFile类的使用_第1张图片

JavaIO 5—RandomAccessFile类的使用_第2张图片

    这里我要说明的是我们读取数据的时候,要根据我们写入的数据相同,否则我们读取的数据将会错误。

        我们看一下上面程序的15行,for循环读取文件可是什么时候我们知道读取到文件的末尾了呢。在这个类中给我们提供了一个方法: public long getFilePointer() 返回此文件中的当前偏移量。由于返回值是long型的,所以我们i也用的long型。我们在看一下程序的14行,如果我们把这句话去掉的话,程序将会错误,因为我们写入的时候,指针已经到了末尾,我们再读取的时候就读不到东西,所以我们需要使用seek方法,将指针定位到开始位置。
        对于这个类还有许多东西需要掌握,读者可以自己根据JavaAPI学习。
        如果哪里错了,还请指出。

你可能感兴趣的:(java,File,存储,扩展,byte)