Java RandomAccessFileファイルの読み取りと書き込みを実装する場所を指定します
RandomAccessFileは、ランダム読み取りクラスに属します。ファイル自体のコンテンツをランダムに操作でき、ファイルの指定された場所でコンテンツを読み書きできます。これは、多くの場合非常に便利です。
RandomAccessFileは、データレコードを保持するファイルにアクセスするために使用されます。 SEEK()メソッドを使用して、レコードにアクセスして読み書きできます。これらのレコードのサイズは同じである必要はありません。ただし、そのサイズと場所を知っている必要があります。ただし、このクラスはファイルの操作に限定されています。
RandomAccessFileは、inputStreamおよびoutputStreamクラスに属していません。実際、DatainputおよびDataOutputインターフェイスの実装(DatainputStreamとDataOutputStreamもこれらの2つのインターフェイスを実装している)に加えて、これら2つのクラスとは何の関係もありません。それは完全に独立したクラスであり、すべての方法(ほとんどはそれ自体に属します)はゼロから書かれています。これは、ランダムアクセスファイルがファイル内で前後に移動できるため、その動作は他のI/Oクラスとは多少根本的に異なるためかもしれません。要するに、それはオブジェクトを直接継承する別のクラスです。
基本的に、RandomAccessFileの動作方法は、DatainputStreamとDataOutputStreamを組み合わせて、getFilePointer()などの独自のメソッドを追加して、ファイルを移動するために()を求めて()ファイルサイズの長さ()、およびSKIPのスキップ()を決定することです。さらに、そのコンストラクターには、読み取り専用モード( "r")またはread-writeモード( "rw")でファイルを開くかどうかを示すパラメーターもあります(cのfopen()とまったく同じ)。ファイルの作成のみをサポートしていません。
RandomAccessFileのみにSEEK検索方法があり、この方法はファイルにのみ適用できます。 BufferedInputStreamにはMARK()メソッドがあり、マークを設定するために使用できます(結果を内部変数に保存)し、RESET()を呼び出してこの位置に戻りますが、その機能は弱すぎて実用的ではありません。
例コード:
java.io.ioexception; Import java.io.randomaccessfile;/** * randomaccessfileはランダムな読み取りクラスに属し、ファイル自体のコンテンツを直接かつランダムに操作できます。つまり、コンテンツを読み書きするために場所を指定できます * @author andy * */public class fidectest {] 書く();読む(); } public static void write()throws ioException {// read-writeの方法でファイルにアクセスしているrandomaccessfile raf = new RandomAccessFile( "d://test.txt"、 "rw"); raf.writebytes( "Hello World!"); raf.writeboolean(true); raf.writeint(30); raf.writedouble(3.56); raf.close(); } public static void read()throws ioexception {randomaccessfile raf = new RandomAccessFile( "d://test.txt"、 "r"); raf.seek(12); //ポインターの位置を設定しますboolean booleanvalue = raf.readboolean(); int intvalue = raf.readint(); double doublevalue = raf.readdouble(); raf.seek(0); //ファイルbyte [] bytes = new byte [12]の先頭にポインターの位置を設定します。 for(int i = 0; i <bytes.length; i ++)bytes [i] = raf.readbyte(); //バイトを一度に読み取り、bytes [i] stringvalue = new string(bytes); raf.skipbytes(1); // byte byte int intvalue2 = raf.readint(); raf.close(); System.out.println(booleanvalue); system.out.println(intvalue); System.out.println(doubleValue); System.out.println(StringValue); System.out.println(intvalue2); }}読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!