/*
* RandomAccessFile类,随机读写文件
*
* 数据分段要有规律,每段大小相等,可以将每段数据设置为较大的值,足以存在每一个段的数据
*
*/
public class Test04 {
public static void main(String[] args) throws IOException {
//writeFile();
readFile();
}
// 写入数据
public static void writeFile() throws IOException {
//以读写模式创建一个RandomAccessFile实例
RandomAccessFile raf=new RandomAccessFile("D:\\Java\\aaa.txt", "rw");
raf.write("张三".getBytes());
raf.write(97);
raf.writeUTF("欢迎来到南京网博!");
raf.writeInt(20);
raf.writeBoolean(true);
raf.writeDouble(12.5);
raf.write("张三".getBytes());
raf.seek(20);
raf.writeInt(20);
raf.write("李四".getBytes());
raf.seek(24*1+20);
raf.writeInt(18);
//将指针移动到第四个学生的位置,空出第三个学生
raf.seek(24*3);
raf.write("赵小六".getBytes());
raf.seek(24*3+20);
raf.writeInt(23);
System.out.println("写入文件成功!");
raf.close();
}
//读取数据
public static void readFile() throws IOException{
RandomAccessFile raf=new RandomAccessFile("D:\\Java\\aaa.txt", "rw");
String name=new String(buffer);
System.out.println("前6个字节:"+name);
int data=raf.read();
System.out.println("第7个字节:"+(char)data);
String welcome=raf.readUTF();
System.out.println("第8个字节及之后:"+welcome);
raf.seek(24*3);
byte[] buffer=new byte[20];
int num=raf.read(buffer);
System.out.println(num);
System.out.println(Arrays.toString(buffer));
String name=new String(buffer,0,num);
int age=raf.readInt();
System.out.println("第四个学生的信息:");
System.out.println("姓名:"+name+",年龄:"+age);
System.out.println("当前指针的位置:"+raf.getFilePointer());
raf.close();
}
}
JAVA学习笔记(三十五)- 随机读写文件 RandomAccessFile
原文:http://blog.csdn.net/wangzi11322/article/details/44699517