import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Arrays; /** *RandomAccessFile :java提供的對文件內容的訪問,既可以讀文件,也可以寫文件。 RandomAccessFile支持隨機訪問文件,可以訪問文件的任意位置 (1)java文件模型 在硬盤上的文件是byte byte byte存儲的,是數據的集合 (2)打開文件 有兩種模式"rw"(讀寫) "r"(只讀) RandomAccessFile raf = new RandomeAccessFile(file,"rw") 文件指針,打開文件時指針在開頭 pointer = 0; (3) 寫方法 raf.write(int)--->只寫一個字節(後8位),同時指針指向下一個位置,準備再次寫入 (4)讀方法 int b = raf.read()--->讀一個字節 (5)文件讀寫完成以後一定要關閉(Oracle官方說明) */ public class RafDemo { public static void main(String[] args) throws IOException { String string="C:"+ java.io.File.separator+"Users"+ java.io.File.separator+"hasee"+ java.io.File.separator+"Desktop"+ java.io.File.separator+"demo"; File demo=new File(string); 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()); raf.write('A');//只寫了一個字節 System.out.println(raf.getFilePointer()); raf.write('B'); System.out.println(raf.getFilePointer()); /* int i = 0x7fffffff; //用write方法每次只能寫一個字節,如果要把i寫進去就得寫4次 raf.write(i >>> 24);//高8位 raf.write(i >>> 16); raf.write(i >>> 8); raf.write(i); System.out.println(raf.getFilePointer()); //可以直接寫一個int raf.writeInt(i);*/ String s = "中"; byte[] gbk = s.getBytes("gbk"); raf.write(gbk); System.out.println(raf.length()); //讀文件,必須把指針移到頭部 raf.seek(0); //一次性讀取,把文件中的內容都讀到字節數組中 byte[] buf = new byte[(int)raf.length()]; raf.read(buf); System.out.println(Arrays.toString(buf));//將數組以字符串形式輸出 for (byte b : buf) { System.out.println(Integer.toHexString(b & 0xff)+" "); } raf.close(); } }
Java中,File類使用(四):RandomAccessFile類讀寫文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.