2017-10-02 7 views
-1

私は現在、バイナリファイルにintの配列を書き込んでオフセットを保存し、各配列に対して読み込むバイト数をJavaで逆インデックスプロジェクトを行っています、後でメモリに読み戻すことができます。どのように私はそれを行うことができるでしょうか?以前はバイナリファイルを扱ったことがないので、どこから始めたらいいのか分かりません。Java:逆インデックスのバイナリファイルに複数のint配列を書き込む

+2

まず、ドキュメントを読んでください。 'DataOutputStream'または' RandomAccesFile'はすぐに気になります。 – EJP

答えて

1

DataOutputStreamで生データを書き込んで、DataInputStreamで読むことができます。これにより、データがテキストとして書き込まれないことが保証されます。

これらの2つのクラスは、プリミティブ型のそれぞれについて、基本的には、1つの過負荷を持ってかなりまっすぐ進むそれはそれらを使用することができますようintfloatcharなど、。 intを書いて読み込むには、writeInt()readInt()という方法があります。

例として、あなたはそのようなあなたのint[]を書くことができ:

int[] myArray = ...; 
DataOutputStream os = new DataOutputStream(new FileOutputStream("C:\\somefile.dat")); 

//write the length first so that you can later know how many ints to read 
os.writeInt(myArray.length); 
for (int i =0 ; i < myArray.length; ++i){ 
    os.writeInt(myArray[i]); 
} 

os.close(); 

そして、それを読み戻すために:あなたがしたい場合に重要であるこれらの例は、例外処理がなかったことを

DataInputStream is = new DataInputStream(new FileInputStream("C:\\somefile.dat")); 

int size = is.readInt(); //read the size which is the first int 
int[] myArray = new int[size]; //use it to reconstruct the array 

for (int i = 0; i < size; ++i){ 
    myArray[i] = is.readInt(); //read all the remaining ints 
} 

is.close(); 

注意を、ファイルが存在しないか、データが破損している場合に、プログラムがクラッシュしないようにします。

関連する問題