IO流 三、RandomAccessFile類的使用

  • RandomAccessFile java提供的對文件內容的訪問,既可以讀文件,也可以寫文件。支持隨機訪問文件,可以訪問文件的任意位置。

 

java文件模型

  • 在硬盤上的文件是 byte byte byte存儲的,是數據的集合

 

打開文件

  • 兩種模式:“rw”(讀寫),“r”(只讀)
  • RandomAccessFile raf = new RandomAccessFile(File,"rw")

  • 文件指針,打開文件時指針在開頭 pointer = 0;

寫方法

  • raf.write(int) --->只寫一個字節(後8位),同時指針指向下一個位置,準備再次寫入

讀方法

  • int b =raf.read() --->讀一個字節

文件讀寫完成以後一定要關閉(Oracle官方說明)

 

RandomAccessFile的使用

File demo = new File("F:\\IO流\\RandomAccessFile的使用");

if (!demo.exists())

    demo.mkdir();

File file = new File(demo, "raf.txt");

if (!file.exists())

     file.createNewFile();

RandomAccessFile raf = new RandomAccessFile(file, "rw");

 

// 指針位置

System.out.println(raf.getFilePointer());    // 輸出0

// 只寫了一個字節

raf.write('A');   // 指針指向1

 

int i = 0X7fffffff;

//用write方法每次只能寫進去一個字節,如果要把i寫進去就得寫四次

raf.write(i >>> 24);// 高8位

raf.write(i >>> 16);

raf.write(i >>> 8);

raf.write(i);

// 可以直接寫一個int

raf.writeInt(i);

 

String s = "中";

byte[] gbk = s.getBytes("gbk");

raf.write(gbk);

// 讀文件,必須把指針移到頭部

raf.seek(0);

// 一次性讀取,把文件中的內容都讀到字節數組中

byte[] buf = new byte[(int) raf.length()];

raf.read(buf);

System.out.println(Arrays.toString(buf));

String s1 = new String(buf);

System.out.println(s1);

//以16進制的方式輸出

for (byte b : buf) {

    System.out.print(Integer.toHexString(b & 0Xff) + " ");

}

raf.close();

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章