Java基础 - RandomAccessFile(文件操作)
列出的为较为常用的相关知识,因为我也是一名小白,所以希望能够通过博客来督促自己学习,若有错误请联系我!!!希望能够一起共同进步,共同成长!
RandomAccessFile位于 java.io.RandomAccessFile
RAF是专门用来读写文件数据的API,其基于针对文件任意位置进行读写。
使用:
RandomAccessFile raf = new RandomAccessFile("./xxx","rw"); // -> 若权限为r 文件不存在,会抛出错误。
// -> 若权限为rw 文件不存在,会自动创建文件。
RandomAccessFile的API:
raf.write(int d); // 写入文件中1字节,对应2进制的“低八位”。
raf.write(byte[] data); // 一次性将给定字节数组中所有字节写入文件。
raf.write(byte[] data,int s,int len); // 将给定字节数组从下标s处开始的连续len个字节一次性写入文件。
raf.writeInt(int data); // 将Int值写入文件。
raf.writeDouble(double d); ... // 将Double值写入文件...
raf.read(); // 从文件中读取1字节,并以int形式返回,若返回-1则表示文件末尾。
raf.read(byte[] data); // 一次性从文件中读取给定数组总长度的字节量,并将读取到的数据存入到该数组中,
// 返回值为实际读取到的字节量。
// 若返回-1,则表示文件末尾(本次没有读取到任何数据)。
raf.readInt(); // 读一个int大小(4个字节)并返回该int值,若连续读取4个字节的过程发现读取到了文件末尾,
// 此时会抛出异常EOFException(end of file)文件末尾。
raf.length(); // 获取文件大小
raf.seek(long pos); // 将指针移动到指定的位置
raf.getFilePointer(); // 获取当前指针位置,返回long值(开始从0位置)
raf.close(); // 关闭 raf
向文件中写入字符串:
String line = "xxxxxxxxxxxx";
byte[] data = line.getBytes("utf-8"); // getBytes()方法要求我们传入一个字符串从那和苏表示字符集的名称
// 该名称不分大小写,作用是将当前字符串按照给定的字符集转换为一
// 组字节,推荐用这种方式,不要按照系统默认字符集操作。
raf.write(data);
复制文件:
RandomAccessFile src = new RandomAccessFile("./xxx.xx","r");
RandomAccessFile desc = new RandomAccessFile("./xxx.xx","rw");
byte[] data = new byte[1024*10];
int d = -1;
while((d = src.read(data)) != -1){
desc.write(data,0,d);
}
src.close();
desc.close();