如何在Java操作RandomAccessFile文件?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供仁壽網(wǎng)站建設(shè)、仁壽做網(wǎng)站、仁壽網(wǎng)站設(shè)計、仁壽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、仁壽企業(yè)網(wǎng)站模板建站服務(wù),10多年仁壽做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
一 簡介
RandomAccessFile:java提供對文件內(nèi)容的訪問,既可以讀文件,也可以寫文件。
RandomAccessFile支持隨機(jī)訪問文件,可以訪問文件的任意位置
1、java文件模型
在硬盤上的文件是byte byte byte存儲的,是數(shù)據(jù)的集合
2、打開文件
有兩種模式“rw”(讀寫) “r”(只讀)
RandomAccessFile raf = new RandomAccessFile(file,"rw")
文件指針:打開文件時候指針在開頭 pointer = 0;
3、寫文件
raf.write(int)---->只寫一個字節(jié)(后8位),同時指針指向下一個位置,準(zhǔn)備再次寫入
4、讀方法
int b = raf.read() ----->讀一個字節(jié)
5、文件讀寫完以后一定要關(guān)閉
二 代碼實現(xiàn)
package com.imooc.io; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Arrays; public class RafDemo { /** * @param args */ public static void main(String[] args) throws IOException{ File demo = new File("demo"); if(!demo.exists()) demo.mkdir(); File file = new File(demo,"raf.dat"); if(!file.exists()) file.createNewFile(); RandomAccessFile raf = new RandomAccessFile(file, "rw"); //指針的位置 System.out.println(raf.getFilePointer()); raf.write('A');//只寫了一個字節(jié) System.out.println(raf.getFilePointer()); raf.write('B'); int i = 0x7fffffff; //用write方法每次只能寫一個字節(jié),如果要把i寫進(jìn)去就得寫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); //一次性讀取,把文件中的內(nèi)容都讀到字節(jié)數(shù)組中 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(); } }
三 實現(xiàn)效果
0
1
6
12
[65, 66, 127, -1, -1, -1, 127, -1, -1, -1, -42, -48]
41
42
7f
ff
ff
ff
7f
ff
ff
ff
d6
d0
關(guān)于如何在Java操作RandomAccessFile文件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。