私たちは、ファイル、てFileWriter、たFileOutputStreamと飾らクラスの様々なデータを書き込むことができますIOの多くの種類があります。これは、私たちが指定した場所にRandomAccessFileの書き込みを達成するのを助けることができます。
文字通りの意味から、我々はこのクラスを介してファイルへのランダムアクセスを行うことができます。
新しいオブジェクトがのRandomAccessFile、ファイルの先頭へのポインタ、すなわち、バイト0、読み出し/書き込みNバイト、n個のポインタの位置である場合のRandomAccessFileオブジェクトは、加えて、ポインタを含みます、ポインタは自由に応じて指定された位置に移動させることができます。
RandomAccessFileは、書くための「RW」に、Fileオブジェクトの設定パラメータを渡すことによって、またはファイル名の文字列を指定することにより、2つのコンストラクタを持っても、パラメータMODEを指定する必要があり、RandomFileAccess指定されたアクセスモード、「R」読み取り専用です。
次のコードは、基本的な使用のRandomAccessFileクラスを理解することができます。
注意すべきもう一つはこれです:
RandomAccessFileライト(バイト[] ARR)メソッドのデフォルトのエンコーディングフォーマットパラメータアレイは、「ISO-8859-1」であり、「ISO-8859-1」にフォーマットのデフォルトをコードするデフォルトの符号化形式中国語GBK、GetBytesメソッドの文字列()メソッド中国を書くときにそのため、あなたはこの行を必要とします
するString.getBytes( "GBK")、符号化形式の統一!
1 / ** 2 *のRandomAccessFile:アクセス・クラス・ファイルがどこ 。3 * / 4 パブリック クラス{RandomAccessFileTest 。5 パブリック 静的 ボイドメイン(文字列[]引数){ 6 insertAtPos(新新ファイル( "F .: /Java.txt") 、8 "海真珠の涙\ R \ nはラムジェイド煙の\ r \ nをウォーム" ); 7 // appendContent(新新ファイル(「F .: /java.txt「)); 8 } 。9 10 11 / / 例を使用し 12である パブリック 静的 ボイド{)(TEST1 13が トライ( 14 RafはのRandomAccessFile = 15 新新規のRandomAccessFile( "F:/コードSE / codeByVi用/ SRC / COM / VI / IO / RandomAccessFileTest.java"、 "R&LT" ;) 16 ){ 17 // 現在のポインタ位置を取得 18は ロングインデックス= RAFを.getFilePointer(); 19。 のSystem.out.println( "現在のポインタの位置:" + 指数); 20である // ポインタ設定位置 21である raf.seek(300 ); 22である のSystem.out.println(「ポインタの現在位置:「+ raf.getFilePointer()); 23である INT hasRead = 0 ; 24 バイト []バッファ= 新しい新 バイト [1024 ]; 25 ながら((hasRead = raf.read(緩衝液))= -1!){ 26が System.out.print(の新しい新しい文字列(バッファ、0 、hasRead)); 27 } 28 } キャッチ(例外E ){ 29 e.printStackTrace(); 30 } 31である } 32 33である / ** 34れる *ファイルの内容を追加し 35 * / 36 パブリック 静的 ボイド)appendContent(ファイルのファイルを{ 37 [ 試行( 38であります RafはのRandomAccessFile = 新しい新規のRandomAccessFile(ファイル、 "RW"を); 39 ){ 40 raf.seek(raf.length()); 41である 文字列の内容= 新しい新しい文字列(.getBytes( "GBK" "記念に") 、 "ISO8859-1" ); 42 raf.write( "3行は私の先生でなければならない" .getBytes( "GBK" )); 43 のSystem.out.println( "追加の成功!" ); 44 } キャッチ(例外E ){ 45 e.printStackTrace(); 46 } 47 } 48 49 / ** 50 *指定された位置に指定された文字列をファイルに挿入 51である * @paramのファイル 52がある * @paramのPOS 53である * @paramのコンテンツ 54がある * / 55 公共 静的 ボイド insertAtPos(ファイルファイル、int型のPOS、文字列のコンテンツ){ 56が トライ( 57で のRandomAccessFileのRaf = 新しい新規のRandomAccessFile(ファイル、 "RW" ); 58 のFileInputStreamのFR = 新しい新規のFileInputStream(新新ファイル( "F .: /temp.txt" )); 59 BWがたFileOutputStream = 新しい新たFileOutputStream(新しい新ファイル( "F .: /Temp.txt" )); 60 ){ 61は raf.seek(POS) 62は、 バイト []バッファ= 新しい新しい バイト [64 ]; 63である INT hasRead = 0 ; 64 // 指定された場所の内容を一時ファイルに書き込む 65 ながら(!(hasRead = raf.read(緩衝液))= -1 ){ 66 bw.write(バッファ、0 、hasRead); 67 } 68 / / 再配置 69 raf.seek(POS)を、 70 // 宛先ファイルに書き込ま対象コンテンツ 71は raf.write(「海の真珠涙」.getBytes(「GBK」)); 72 // 宛先ファイルの末尾に一時ファイルの内容を書き込む 73であり 、一方(!(hasRead = fr.read(緩衝液))= -1 ){ 74 raf.write(バッファ、0 、hasRead); 75 } 76 新新ファイル( "F .: /temp.txt" ).Delete(); 77 System.out.println( "完了を書く!" ); 78 } キャッチ(例外E){ 79 e.printStackTrace(); 80 } 81 } 82 }