ファイルを扱うclass は色々あるね。
今回はRandomAccessFile を使ってみたよ。
RandomAccessFile の利点
RandomAccessFile を使うと、読み込み位置なんかを指定できるんだ。
これはゲームの再開なんかに、とても都合がいい。
RandomAccessFile での読み込み
下記サンプルでは、テキスト・ファイルを一行読み込みしている。
public long head_pos = 0; //現在のseekヘッド位置 public String readline_RA( String path, long readPos, String code ) { // Log.d("TEST", "readline_RA : "+path ); String result = ""; //-- try{ File file = new File( path ); RandomAccessFile ra = new RandomAccessFile( file, "r" ); ra.seek( readPos ); String str = ra.readLine(); if ( str!= null ){ result = str; // }else{ // result = ""; // Log.d("Err", "// readline_RA : read is null //" ); } head_pos = ra.getFilePointer(); ra.close(); }catch( Exception e ){ Log.d("Err", "// readline_RA : read ERR //" ); } //-- return result; }
モード設定
RandomAccessFile は書き込み、読み込みで、別class になっていない。
そのため、オブジェクト生成時に、モードを設定する必要がある。
下記では、読み込み専用として生成している。
new RandomAccessFile( file, "r" );
位置設定
書き込み位置、読み込み位置の設定は、seek method を使う。
値はlong で指定する。
seek( readPos );
位置の取得
書き込み位置、読み込み位置の取得は、getFilePointer method を使う。
値はlong 。
getFilePointer();
by the way…
RandomAccessFile では、文字コードの指定はできない。
そのためテキストファイルは、デフォルト・コード(UTF-8)で扱われてしまう。
Shift-JISを扱うには、別途自前で直す必要がある。
コレに関しては、別項・
Shif-JISで読み込むにて。