RandomAccessFile 这个类的用法 就是随即存储,最好给个列子哈

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xumin51333】截止到2008-07-19 13:52:58的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:210                      每贴平均分数:70                       
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:3                        结贴的总分数:210                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    我觉得主要就是seek的用法,来随意的移动位置读取内容,比如你想跳过第一行不读,只读下面那些,就要用到seek。
      

  3.   

    下面这个例子就是。记录破记录的人的名单,先在已有名单里面查找,有的话就修改下破记录的分数,没有就跳到下一个,然后插入
    public class TestRandomAccessFile{
    private File file; 
    public static void main(String[] args){
    TestRandomAccessFile traf = new TestRandomAccessFile();
    traf.init();
    traf.record("Billy",22);
    traf.listAllRecords();
    }

    public void record(String record_breaker, int times){
    try{
    RandomAccessFile raf = new RandomAccessFile(file,"rw");
    boolean flag = false;
    while(raf.getFilePointer() < raf.length()){
    String name = raf.readUTF();
    if(record_breaker.equals(name)){
    raf.writeInt(times);
    flag = true;
    break;
    }else{
    raf.skipBytes(4);
    }
    }
    if(!flag){
    raf.writeUTF(record_breaker);
    raf.writeInt(times);
    }
    raf.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }

    public void init(){
    if(file == null){
    file = new File("record.txt");
    try{
    file.createNewFile();
    }catch(IOException e){
    e.printStackTrace();
    }
    }
    }

    public void listAllRecords(){
    try{
    RandomAccessFile raf = new RandomAccessFile(file,"r");
    while(raf.getFilePointer() < raf.length()){
    String name = raf.readUTF();
    int times = raf.readInt();
    System.out.println("name:" + name + "\trecord:" + times);
    }
    raf.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }