以下のコードを使用して、ゲーム データを .lst ファイルにシリアル化/逆シリアル化しています。
public static void SaveData(StoreData data)
{
// Get the path of the save game
string fullpath = Path.Combine("Content", filename);
// Open the file, creating it if necessary
FileStream stream = File.Open(fullpath, FileMode.Create);
try
{
// Convert the object to XML data and put it in the stream
XmlSerializer serializer = new XmlSerializer(typeof(StoreData));
serializer.Serialize(stream, data);
}
finally
{
// Close the file
stream.Close();
}
}
シリアライゼーションは、ほとんどの場合、うまく機能しているようです。作成したファイルは次のとおりです。
<?xml version="1.0"?>
<StoreData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<score>2540</score>
<level>8</level>
<difficulty>true</difficulty>
<sound>true</sound>
<mouseControl>true</mouseControl>
</StoreData>
しかし、時折、シリアル化がうまくいかないように見え、ファイルを開くと、次のようなものを作成するために、ファイルの最後に余分な文字が追加されているように見えます:
<?xml version="1.0"?>
<StoreData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<score>2540</score>
<level>8</level>
<difficulty>true</difficulty>
<sound>true</sound>
<mouseControl>true</mouseControl>
</StoreData>a> ---> extra bit added
これにより、正しい形式ではないため、デシリアライズしようとするとゲームがクラッシュします。なぜこれが起こるのか、または私が間違っていることを誰かが知っているなら、私に知らせてください。
前もって感謝します。