2

以下のコードを使用して、ゲーム データを .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

これにより、正しい形式ではないため、デシリアライズしようとするとゲームがクラッシュします。なぜこれが起こるのか、または私が間違っていることを誰かが知っているなら、私に知らせてください。

前もって感謝します。

4

1 に答える 1