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

java基础-RandomAccessFil(随机访问)

2018-02-28 15:49 381 查看
package com.gdy.file;

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

/**
* RandomAccessFile是java输入输出流体系同功能嘴最丰富的文件内容方位类,既可以读取文件内容,也可以向文件输出数据
* 特定:
* 1.支持随机访问,可以跳到文件任意位置读写数据
* 2.可以向已存在的文件中追加内容
* 3.只能读写文件,不能读写其他IO节点
* 4.含有一个记录指针
*      long getFilePointer():返回文件记录指针的当前位置
*      void seek(long pos):将文件记录指针定位到pos位置
*      指定位置写内容时,会覆盖对应位置原有的内容
* 5.RandomAccessFile有两个构造器
*      r:只读方式打开文件,如果文件不存在,则尝试创建文件
*      rw:以读写方式打开文件,如果文件不存在,则尝试创建文件
*      rws:以读写方式打开文件,相当于rw模式,还要求对文件的内容或者元数据的每个更新都同步写入到底层存储设备
*      rwd:以读写方式打开文件,相当于rw模式,还要求对文件内容的每个更新都同步写入到底层存储设备
*/
public class RandomAccessFileDemo {

/**
* 读取指定中间部分的数据
*/
public static void randomAccessFileRead(){
try {
RandomAccessFile raf = new RandomAccessFile("data/file/RandomAccessFile.txt","r");
//获取RandomAccessFile对象文件指针的位置初始位置是0
System.out.println("RandomAccessFile的文件指针的初始位置:"+raf.getFilePointer());

//移动raf的文件记录指针的位置
raf.seek(2);
byte[] bbuf = new byte[1024];
//用于保存实际读取的字节数
int hasRead = 0;
while ((hasRead = raf.read(bbuf)) >0){

System.out.println(new String(bbuf,0,hasRead));
}

}catch (IOException e) {
e.printStackTrace();
}
}

/**
* 向指定文件中追加内容
*
*/
public static void RandomAccessFileWrite(){
try {
RandomAccessFile raf = new RandomAccessFile("data/file/RandomAccessFile.txt" , "rw");
//将指针移动到out.txt文件的最后
raf.seek(raf.length());
raf.write("2018年2月28日".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
randomAccessFileRead();
RandomAccessFileWrite();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: