RandomAccessFile實現倒序輸出檔案的內容
因為之前碰到了一道題目:
編寫一個Java應用程式,利用RandomAccessFile類,把幾個int型整數(1,2,3,4,5,6,7,8,9,10)寫入到一個名字為tom.dat檔案中,然後按相反順序讀出這些資料並顯示在螢幕上。(注意,一個int型資料佔4個位元組)
題目要求對檔案進行倒序輸出,最開始自己的想法是利用RandomAccessFile對檔案進行寫入操作,接著再開始利用讀操作將讀到的資料存放到陣列中,最後進行反向遍歷輸出.寫完後,覺得不大對頭,因為題目中注意的條件沒有用到!
於是看到網上的一段程式碼:
public static void main(String[] args) {
try {
File file=new File("tom.dat");
RandomAccessFile raFile=new RandomAccessFile(file, "rw");
for(int i=1;i<=10;i++)
raFile.writeInt(i);
//設定檔案指標位置,每讀出一個就將指標進行前移
for(int i=40-4;i>=0;i-=4)
{
raFile.seek(i);
int a=raFile.readInt();
System.out.println(a);
}
} catch (Exception e) {
}}
因為一個int是4個位元組,所以在這裡先將指標移到第九位,也就是第36位上,接著進行輸出,每次輸出一個,就讓指標向前移動四個位置,這種方法很好的解決了問題.
另外就是發現了一個易錯點,在利用Randomaccessfile進行讀寫操作時,如果是從首位置開讀,那麼一定要注意在寫入操作完畢時,將檔案指標置為0再進行讀操作!