0

私のクラス「DiaryManager」では、2つの異なるタイプ(T)の2つのリストを取得し、それをファイルに保存してから、ロードしたいと思います。これから紹介するリストの1つで動作するようになりました。

作業コードに保存してロードするリストの名前は「m_diary」です。保存方法は次のとおりです。

    /// <summary>
    /// Saves the object information
    /// </summary>
    public void Save()
    {
        // Gain code access to the file that we are going
        // to write to
        try
        {
            // Create a FileStream that will write data to file.
            FileStream writerFileStream =
                new FileStream(DATA_FILENAME, FileMode.Create, FileAccess.Write);
            // Save our dictionary of friends to file
            m_formatter.Serialize(writerFileStream, m_diary);

            // Close the writerFileStream when we are done.
            writerFileStream.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        } 
    }

そして私のロード方法はこれです:

    /// <summary>
    /// Load the object to the program 
    /// </summary>
    public void Load()
    {

        // Check if we had previously Save information of our friends
        // previously
        if (File.Exists(DATA_FILENAME))
        {

            try
            {
                // Create a FileStream will gain read access to the
                // data file.
                FileStream readerFileStream = new FileStream(DATA_FILENAME,
                    FileMode.Open, FileAccess.Read);
                // Reconstruct information of our friends from file.
                m_diary = (List<Diary>)                    
                    m_formatter.Deserialize(readerFileStream);
                // Close the readerFileStream when we are done
                readerFileStream.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            } 

        } 

    }

「DATA_FILENAME」は次の定数です。

    private const string DATA_FILENAME = "TrainingDiary.dat";

このコードは、私のWindowsフォームクラスから完全に機能します。しかし今、Ivは別のタイプのリストをもう1つ追加しました。

その2番目のリストを保存してロードするにはどうすればよいですか?:)

よろしくサイリックス

4

2 に答える 2

2

2番目のリストに同様のコードを使用してそれを行うか、一般的なメソッドを作成できます。

   public static void Save<T>(string fileName, List<T> list)
    {
        // Gain code access to the file that we are going
        // to write to
        try
        {
            // Create a FileStream that will write data to file.
            using (var stream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                var formatter = new BinaryFormatter();
                 formatter.Serialize(stream, list);
            }

        }
        catch (Exception ex)
        {
           Console.WriteLine(ex.Message);
        }
    }

そしてロード方法:

   public static List<T> Load<T>(string fileName)
    {
        var list = new List<T>();
        // Check if we had previously Save information of our friends
        // previously
        if (File.Exists(fileName))
        {

            try
            {
                // Create a FileStream will gain read access to the
                // data file.
                using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    var formatter = new BinaryFormatter();
                    list = (List<T>)
                        formatter.Deserialize(stream);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
        return list;
    }

負荷の使用法:

        var list = new List<string> {"one", "two", "three"};
        Save("first.dat", list);

        var list2 = Load<string>("first.dat");
        foreach (var VARIABLE in list2)
        {
            Console.WriteLine(VARIABLE);
        }

ステートメントを使用してオープン/クローズストリームを処理するも参照してください。

于 2012-08-30T08:30:37.587 に答える
1

保存するすべてのデータ(リスト)を含むクラスを作成する必要があります。次に、そのクラスをファイルに保存します。

于 2012-08-30T08:28:03.157 に答える