Java RandomAccessFile基本的用法


一、認識RandomAccessFile類

      RandomAccessFile是Java提供的對文件內容的訪問,既能夠讀取文件,也能夠寫文件;

      RandomAccessFile支持隨機訪問文件,可以訪問文件的任意位置。

(1)打開文件,有兩種打開模式-----“rw”(讀寫)、“r”(只讀)

       RandomAccessFile raf=new RandomAccessFile(file,“rw”);

RandomAccessFile能夠隨機讀取文件的內容是因為存在一個指針,記錄讀取或者寫入的位置,打開文件是pointer=0;

Ran

(2)寫方法

  寫方法一次只能寫入一個字節,寫入后指針指向下一個位置

    raf.write(int);//斜土的是int的后8位

(3)讀方法

同樣的讀方法也是一次讀取一個字節

int b=raf.read();

(4)文件讀寫完成后要關閉

raf.close();

簡單操作

package com.neuedu.demo01;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class RandomAccessFiledemo {
    public static void main(String[] args)throws IOException {
     File demo=new File("demo");
     if (!demo.exists()) {
         demo.mkdir();
     }
     File file=new File(demo,"raf.bat");
     if (!file.exists()) {
         file.createNewFile();
     }
     RandomAccessFile raf=new RandomAccessFile(file, "rw");
    
     System.out.println("向文件中寫入");
     raf.write('A');   //寫入一個字符,只會寫入第八位
     raf.write('B');
     int i=112324;
     //用write方法每次只能寫一個字節,如果要把i寫進去需要寫4次
     raf.write(i>>>24);
     raf.write(i>>>16);
     raf.write(i>>>8);
     raf.write(i);
     raf.writeInt(i);                         //也可以直接寫入一個整數,占4個字節,底層實現就是上面的方法
     raf.writeUTF("這是一個UTF字符串");         // 這個長度寫在當前文件指針的前兩個字節處,可用readShort()讀取 
     raf.writeDouble(8.236598);               // 占8個字節 
     raf.writeBoolean(true);                  // 占1個字節 
     raf.writeShort(395);                     // 占2個字節 
     raf.writeLong(2325451l);                 // 占8個字節 
     raf.writeFloat(35.5f);                   // 占4個字節 
     raf.writeChar('a');                      // 占2個字節 
     String string="中";
     byte [] by=string.getBytes();
     raf.write(by);
     System.out.println(raf.getFilePointer());
    
    
    
     //讀取文件,把指針移到讀取的位置---利用的是seek()
     raf.seek(0);                                                 ///將指針移到文件的開頭
     //一次性讀取,就是把文件中的內容都讀取到字節數組中
     byte [] buffer=new byte[(int)raf.length()];
     raf.read(buffer);   
     //將文件一次性讀取到字節數組中
     System.out.println("輸出文件全部內容:");
     System.out.println(Arrays.toString(buffer));
     for (byte b : buffer) {
         System.out.print(Integer.toHexString(b &0xff)+" ");      //以十六進制輸出
     }
     System.out.println();
     raf.seek(2);                                                //將指針移到第三個字節位置
     int readInt = raf.readInt();                                //讀取一個整數
     System.out.println(readInt);
     raf.skipBytes(4);                                           //跳過一個int
     System.out.println(raf.readUTF());                          //輸出UTF語句
    
    
    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM