2016-12-22 5 views
0

は、私は、ファイルの最善の方法は、ファイルにこれを書くためにいただきましたので、書き込み/読み取りアレイは今の

int var[][] = new int var[6][3] 
int var_2[][] = new int var[7][5]; 

に保存するこの二つの配列を得たi've Androidの?この

try { 
    ObjectOutputStream objOut = new ObjectOutputStream(new 
    FileOutputStream("data.dat")); 
    objOut.writeObject(var_1); 
    objOut.writeObject(var_2); 
    objOut.close(); 
    } 
catch (Exception e) { 
e.printStackTrace(); 
} 

のようないくつかの例は、私はこの権利をやっているか?見

I'veそしてもし私がいれば、私はどのようにして私の変数に正しく読み込むのですか?

答えて

0

これは概念的に正しいことですが、改善の余地があります。まず、e.printStackTrace()ではなくAndroidログ機能(android.util.Log)を使用する必要があります。

try (ObjectOutputStream objOut = new ObjectOutputStream(new 
    FileOutputStream("data.dat"))) 
{ 
    objOut.writeObject(var_1); 
    objOut.writeObject(var_2); 
} catch (Exception e) { 
    Log.e(LOG_TAG, "Could not save data", e); 
} 

LOG_TAGは、あなたのクラスの出力を識別するために定義するだけでいくつかのStringです。)あなたがしよう、と使用できない場合:あなたのminSdkLevelが19以上である場合にも、私はあなたがtry-with-resourcesステートメントを使用することをお勧めします-resourcesは、私はストリームを閉じますfinally句を使用することをお勧めします:

ObjectOutputStream objOut = null; 
try { 
    objOut = new ObjectOutputStream(new FileOutputStream("data.dat")) 
    objOut.writeObject(var_1); 
    objOut.writeObject(var_2); 
} catch (Exception e) { 
    Log.e(LOG_TAG, "Could not save data", e); 
} finally { 
    if (objOut != null) { 
     try { 
      objOut.close(); 
     } catch (Exception e) { 
      Log.e(LOG_TAG, "Could not close output file", e); 
     } 
    } 
} 

これは、例外がwriteObjectへの呼び出しでスローされた場合でも、出力ストリームがクローズされることを保証します。

データを読み込むには、同じファイルにを開き、データを、書き込んだのと同じ順序で読み取ってください。

関連する問題