您的位置:首页 > 编程语言 > Java开发

java.io.RandomAccessFile

2017-06-29 21:51 387 查看


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

方法读取,并通过
seek
方法设置。

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

构造方法:

RandomAccessFile(File file,String mode )

 创建从中读取和向其中写入(可选)的随机访问文件流,该文件由
File
参数指定。

RandomAccessFile(String name,String mode)

创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

常用方法:

void close()

 关闭此随机访问文件流并释放与该流关联的所有系统资源。

long length()

返回此文件的长度

getFilePointer()

返回此文件中的当前偏移量。

int read()

从此文件中读取一个数据字节。

int read(byte[] b)

将最多
b.length
个数据字节从此文件读入 byte 数组。

int read(byte[] b,int off,int len)

 将最多
len
个数据字节从此文件读入 byte 数组。

readInt()

 从此文件读取一个有符号的 32 位整数。

void seek(long pos)

设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。

write(int b)

 向此文件写入指定的字节。

write(byte[] b)

b.length
个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。

write(byte[] b,int off,int len)

 将
len
个字节从指定 byte 数组写入到此文件,并从偏移量
off
处开始。

writeInt(int v)

 按四个字节将
int
写入该文件,先写高字节。

复制一张图片的案例:

package june;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.RandomAccessFile;

/**

 * 测试复制文件的类

 * @author overfront

 *

 */

public class RandomAccessFileTest {

public static void main(String[] args) throws IOException {
RandomAccessFile src = new RandomAccessFile("house.jpg","r");
RandomAccessFile target = new RandomAccessFile("house_copy.jpg","rw");
byte[] data = new byte[1024*10];
int len;
while((len=src.read(data))!=-1){
target.write(data,0,len);
}
System.out.println("复制完毕!");
src.close();
target.close();

}

}

文件复制前:



程序运行后复制完毕:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息