【JAVA IO】_RandomAccessFile筆記

來源:互聯網
上載者:User

【JAVA IO】_RandomAccessFile筆記

本章目標:
掌握RandomAccessFile類的作用
可以使用RandomAccessFile讀取指定位置的資料

RandomAccessFile類的主要功能是完成隨機讀取功能,可以讀取指定位置的內容。

RandomAccessFile是按位元組進行讀取資料的。要想瞭解資料類型的位元組長度請看這裡:

java裡面一個字元占幾個位元組?

http://blog.csdn.net/e421083458/article/details/8518578

Java中字串在不同字元編碼中所佔位元組數
http://blog.csdn.net/e421083458/article/details/8518601

public RandomAccessFile(File file,String mode) throws FileNotFoundException

mode即開啟模式:
r:讀模式
w:唯寫
rw:讀寫,如果使用此模式,如果檔案不存在,則會自動建立。

import java.io.File ;import java.io.RandomAccessFile ;public class RandomAccessFileDemo01{    // 所有的異常直接拋出,程式中不再進行處理    public static void main(String args[]) throws Exception{        File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的檔案        RandomAccessFile rdf = null ;        // 聲明RandomAccessFile類的對象        rdf = new RandomAccessFile(f,"rw") ;// 讀寫入模式,如果檔案不存在,會自動建立        String name = null ;        int age = 0 ;        name = "zhangsan" ;            // 字串長度為8        age = 30 ;                    // 數位長度為4        rdf.writeBytes(name) ;        // 將姓名寫入檔案之中        rdf.writeInt(age) ;            // 將年齡寫入檔案之中        name = "lisi    " ;            // 字串長度為8        age = 31 ;                    // 數位長度為4        rdf.writeBytes(name) ;        // 將姓名寫入檔案之中        rdf.writeInt(age) ;            // 將年齡寫入檔案之中        name = "wangwu  " ;            // 字串長度為8        age = 32 ;                    // 數位長度為4        rdf.writeBytes(name) ;        // 將姓名寫入檔案之中        rdf.writeInt(age) ;            // 將年齡寫入檔案之中        rdf.close() ;                // 關閉    }};
import java.io.File ;import java.io.RandomAccessFile ;public class RandomAccessFileDemo02{    // 所有的異常直接拋出,程式中不再進行處理    public static void main(String args[]) throws Exception{        File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的檔案        RandomAccessFile rdf = null ;        // 聲明RandomAccessFile類的對象        rdf = new RandomAccessFile(f,"r") ;// 以唯讀方式開啟檔案        String name = null ;        int age = 0 ;        byte b[] = new byte[8] ;    // 開闢byte數組        // 讀取第二個人的資訊,意味著要空出第一個人的資訊        rdf.skipBytes(12) ;        // 跳過第一個人的資訊        for(int i=0;i<b.length;i++){            b[i] = rdf.readByte() ;    // 讀取一個位元組        }        name = new String(b) ;    // 將讀取出來的byte數組變為字串        age = rdf.readInt() ;    // 讀取數字        System.out.println("第二個人的資訊 --> 姓名:" + name + ";年齡:" + age) ;        // 讀取第一個人的資訊        rdf.seek(0) ;    // 指標回到檔案的開頭        for(int i=0;i<b.length;i++){            b[i] = rdf.readByte() ;    // 讀取一個位元組        }        name = new String(b) ;    // 將讀取出來的byte數組變為字串        age = rdf.readInt() ;    // 讀取數字        System.out.println("第一個人的資訊 --> 姓名:" + name + ";年齡:" + age) ;        rdf.skipBytes(12) ;    // 空出第二個人的資訊        for(int i=0;i<b.length;i++){            b[i] = rdf.readByte() ;    // 讀取一個位元組        }        name = new String(b) ;    // 將讀取出來的byte數組變為字串        age = rdf.readInt() ;    // 讀取數字        System.out.println("第三個人的資訊 --> 姓名:" + name + ";年齡:" + age) ;        rdf.close() ;                // 關閉    }};

總結:

byte b[] = new byte[8] ;    // 開闢byte數組
for(int i=0;i<b.length;i++){
    b[i] = rdf.readByte() ;    // 讀取一個位元組,因為每次只能讀取一個位元組
}
name = new String(b) ;        // 將讀取出來的byte數組變為字串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.