RandomAccessFile是Java提供的對文件內容的訪問,她既可以讀文件,也可以寫文件,並且RandomAccessFile支持隨機訪問文件,也就是說他可以指定位置進行訪問。
我們知道Java的文件模型,文件硬盤上的文件是byte byte byte的字節進行存儲的,是數據的集合。下面就是用這個類的步驟。
(1)打開指定的文件,有兩種模式“rw”(讀寫) “r”(只讀),創建對象,並且指定file和模式,例如:
RandomAccessFile ac=new RandomAccessFile(file,”rw”);
因為它支持隨機訪問文件,所以他引入了指針,可以通過指針來寫入寫出在指定的位置。文件指針,打開文件時指針在開頭pointer=0
(2)RandomAccessFile的往文件中寫的方法(還有其他的寫方法)
Ac.write(int)----->只能寫一個字節(后八位),同時文件指針也會移動,指向下一個位置。
(3)RandomAccessFile讀的方法(還有其他的讀方法)
int b=ac.read()--->讀一個字節
(4)文件讀寫完畢后必須要把他關閉,調用close()的方法。下面就是例子:
//創建相對路徑的文件,就是在這個項目中創建一個文件夾 File file=new File("random"); if(!file.exists()) { file.mkdir(); } File fileName=new File(file,"javaio.txt"); if(!fileName.exists()) { fileName.createNewFile();//創建文件 } //創建一個RandomAccessFile的對象,並指定模式rw,能讀能寫, //注意:必須是文件,不能是路徑 RandomAccessFile raf=new RandomAccessFile(fileName,"rw"); //獲取此時的文件指針的位置,起始位置為0 System.out.println(raf.getFilePointer()); //向文件中寫入字符A,字符類型有兩個字節,但她寫入的是后八位的字節 //字符A正好可以用后八位的字節表示出來 raf.write('A'); //字符的位置會自動向后移動,文件指針會向后自動移動 System.out.println("輸入一個字符之后,文件指針的位置"+raf.getFilePointer()); raf.write('B'); //每次write只能寫入一個字節,如果要把i寫進去,就需要寫四次 int i=0x7fffffff; raf.write(i>>>24 & 0xff);//寫入高八位的 raf.write(i>>>16 & 0xff); raf.write(i>>>8 & 0xff); raf.write(i);//寫入低八位 System.out.println("寫入整數的時候文件指針的位置是"+raf.getFilePointer()); /** * writeInt()的內置方法 * public final void writeInt(int v) throws IOException { write((v >>> 24) & 0xFF); write((v >>> 16) & 0xFF); write((v >>> 8) & 0xFF); write((v >>> 0) & 0xFF); //written += 4; } */ //也可以直接寫入int整數 raf.writeInt(i); //寫入一個漢字,漢字為兩個字節 String str="歡迎學習java"; byte[] b=str.getBytes("gbk"); raf.write(b); System.out.println("此時的長度為"+raf.length()); //讀文件必須將文件指針放在開頭位置 raf.seek(0); byte[] buf=new byte[(int)raf.length()]; raf.read(buf);//將內容寫入buf字節數組中 String str1=new String(buf,"gbk"); System.out.println("文件中的內容為"+str1); raf.close();