RandomAccessFile 随机读写

来源:互联网 发布:react native ios java 编辑:程序博客网 时间:2024/06/06 20:21
我本来写了个可以存入信息的地址簿,使用RandomAccessFile类来随机读写.当然可以使用GUI查看.反正说也说不清了.我就直接说下下面的一个测试程序来说明我的问题:

Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;
 
class test {
  public static void main(String[] args) throws IOException{
    RandomAccessFile r = new RandomAccessFile("heihei.txt""rw");
 
    r.writeChar('a');
    r.writeChar('b');
    r.writeChar('c');
    //这样文件的内容不就应该是abc了吗?
 
    r.seek(2); //指针设置在a后.
    r.writeChar('d'); //文件理应变成adbc,但貌似不是这么回事,如下
 
    StringBuffer strBuf = new StringBuffer();
    r.seek(0); //指针归回初始位置
    strBuf.append(r.readChar()); 
    strBuf.append(r.readChar());
    strBuf.append(r.readChar()); 
    strBuf.append(r.readChar());
 
    System.out.println(strBuf); //结果是adc
  }
}


居然没有料到RandomAccessFile有自动更新文件的功能,如果你将指针放在文件中间,不是在指针位置插入内容,而是逐步更新内容,此时文件大小不会增加,除非你把指针放在文件末尾.
这也就是我的地址簿出错的原因,如果我在中间插入内容的话,就会出现原来的部分丢失的情况.
0 0
原创粉丝点击