2016-07-19 5 views
2

以下のコードを使用して、デスクトップに保存されたファイルからデータを取得し、作成しているゲームに入力します。Javaシリアル化とオブジェクトの扱い

try { 
    FileInputStream saves = new FileInputStream("/Users/Prodigy958/Desktop/Hack_exeSaves.ser"); 
    ObjectInputStream in = new ObjectInputStream(saves); 
    test = (player) in.readObject(); 
    in.close(); 
    saves.close(); 
} catch(IOException error) { 
    error.printStackTrace(); 
    return; 
} catch(ClassNotFoundException error) { 
    error.printStackTrace(); 
    return; 
} 

また、プレーヤーオブジェクトを取り込んでファイルに入力するセクションもあります。

player realPlayer = new player(); 
realPlayer.name = newName; 
realPlayer.gender = newGender; 
realPlayer.hasStarted = false; 
try { 
    FileOutputStream fileOut = new FileOutputStream("/Users/Prodigy958/Desktop/Hack_exeSaves.ser"); 
    ObjectOutputStream out = new ObjectOutputStream(fileOut); 
    out.writeObject(realPlayer); 
    out.close(); 
    fileOut.close(); 
} catch(IOException i) { 
    i.printStackTrace(); 
} 

私が午前問題は、ファイルに複数のプレイヤーデータを保存した場合、それはすべてのデータを取り、1つのプレイヤオブジェクトに変換しますので、それがエラーを呼び出すことです。私はデータを分割できる簡単な方法をご存じですか?私は、それぞれの異なるオブジェクトのデータを格納するために複数のファイルを使用することについて考えました。私はまた、データを取り出して別のオブジェクトに分割してそこから作業することについても持っていますが、2番目のものをどこから始めるべきかはわかりません。

+3

プレーヤーのSetまたはHashMapをシリアル化することはどうですか? – BCartolo

+0

@BCartoloどうしたらいいですか?問題は、ファイルに複数のプレーヤーが常に存在するとは限らないことです。 – Shaydoth

+1

サイズ1のセットはあなたに合っていないので.....? – whitesite

答えて

2

すでに提案されているように、java.util.Collectionのシリアライズ可能な実装を使用してください。 (ほとんどのjava.utilコレクション - java.util.ArrayListjava.util.HashSetなど - はシリアライズ可能です)ゲームに他のビジネスがない限り、0または1要素のコレクションはあなたを邪魔してはいけません(コレクションのシリアライズには関係ありません)そのような場合は、この質問の範囲をはるかに超えており、あなた自身で処理する必要があります。

関連する問題