C#のオブジェクトは、単一のファイルの複数を直列化します

  特定の状況下では、ファイルに複数のオブジェクトを保存する必要があるかもしれません。インターネットはしばらく探して、私は特にこの問題を言って見つけることができませんでした。ボーは少しを終え、関連する質問と回答を見て尋ねました。以下は私の単純な実現のいずれかです。

   //测试用于保存的类
  [直列化]
クラスTestToSerizable { 公共のint I。 公共の文字列B; 公共 TestToSerizable(int型 I、B) { この .I = I。 この .B = B; } } クラスプログラム { 静的 ボイドメイン(文字列[]引数) { TestToSerizable種皮 = 新しい TestToSerizable(1種皮)。 TestToSerizable TESTB = 新しい TestToSerizable(2" TESTB " ); TestToSerizable TESTC = 新しい TestToSerizable(3" TESTC " );
       //序列化保存多个对象 のFileStream fsの
= 新しい FileStreamを(" DataFile.dat " 、FileMode.OpenOrCreate)。 BinaryFormatterフォーマッタ = にBinaryFormatter(); formatter.Serialize(FS、種皮)。 formatter.Serialize(FS、TESTB)。 formatter.Serialize(FS、TESTC)。 fs.Flush(); fs.Close();        //逆序列化读取多个对象         
FS = 新しい FileStreamを(" DataFile.dat " 、FileMode.Open)。 フォーマッタ = にBinaryFormatter(); TestToSerizable A = (TestToSerizable)formatter.Deserialize(FS)。 TestToSerizable B = (TestToSerizable)formatter.Deserialize(FS)。 TestToSerizable C = (TestToSerizable)formatter.Deserialize(FS)。 fs.Close();

 Console.WriteLineを( "AIは=" + + "AB =" + AB AI)。
 Console.WriteLineを( "BI =" + BI + "BB =" + BB)。
 Console.WriteLineを( "CI =" + CI + "CB =" + CB)。

        } 
    }

   結果:

  

  さらに、あなたが状況を保存するオブジェクトのさまざまな種類があるかもしれません。

   

    [直列化]
     クラスTestToSerizableA 
    { 
        公共 のint I。
        公共の 文字列B;
        公共 TestToSerizableA(int型 I、B)
        { 
            この .I = I。
            この .B = B; 
        } 
    } 
    [直列化] 
    クラスTestToSerizableB 
    { 
        パブリック ブール公共 フロートB;
        公共 TestToSerizableB(BOOLフロートB)
        { 
            この .A = この .B = B; 
        } 
    } 
    クラスプログラム
    { 

        静的 ボイドメイン(文字列[]引数)
        { 
            TestToSerizableAの種皮 = 新しい TestToSerizableA(1" テスタ" )。
            TestToSerizableB TESTB = 新しい TestToSerizableB(1.23f ); 
            TestToSerizableAのTESTC = 新しい TestToSerizableA(3" TESTC " )。
            TestToSerizableB TESTD = 新しい TestToSerizableB(3.14f ); 

            // 交叉保存的不同类型的对象 
            のFileStream fsの= 新しい FileStreamを(" DataFile.dat " 、FileMode.OpenOrCreate)。
            BinaryFormatterフォーマッタ = にBinaryFormatter(); 
            formatter.Serialize(FS、種皮)。
            formatter.Serialize(FS、TESTB)。
            formatter.Serialize(FS、TESTC)。
            formatter.Serialize(FS、TESTD)。
            formatter.Serialize(FS、1); // 基本的なタイプであってもよい

            。fs.Flush()
            fs.Close(); 

            // 順次記憶中に読み取ら 
            FS = 新しい新規のFileStream(" DataFile.dat " 、FileMode.Open ); 
            フォーマッタ = 新しい新規にBinaryFormatter(); 
            TestToSerizableA A = (TestToSerizableA)formatter.Deserialize(FS); 
            TestToSerizableB B = (TestToSerizableB)formatter.Deserialize(FS); 
            TestToSerizableA C = (TestToSerizableA)formatter.Deserialize(FS)。
            TestToSerizableBさd = (TestToSerizableB)formatter.Deserialize(FS)。
            int型 I =(int型)formatter.Deserialize(FS)。

            fs.Close(); 
            Console.WriteLineを(" AIは= " + + aiを" AB = " + AB)。
            Console.WriteLineを(" BI = " + BA + " BB = " + BB)。
            Console.WriteLineを(" CI = " + CI + " CB = " + CB)。
            Console.WriteLineを(" ディ= " + DA + " DB = " + DB)。
            Console.WriteLineを(" i = " + I)。
}
}

 

  結果:

  

  

  最初のブログ、ディスカッション、してください前任者の翼を開始します。

  上記

ます。https://www.cnblogs.com/zhang-ming/p/3793213.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34082789/article/details/93248959