将两个列表保存到文件中,然后加载c#
在我的“DiaryManager”类中,我得到了两个具有两种不同类型(T)的列表,我想将其保存到文件中,然后我想加载它。 我把它和我的一个列表一起使用,我将向你们展示 我在工作代码中保存和加载的列表名为“m_日记”。保存方法如下所示:将两个列表保存到文件中,然后加载c#,c#,C#,在我的“DiaryManager”类中,我得到了两个具有两种不同类型(T)的列表,我想将其保存到文件中,然后我想加载它。 我把它和我的一个列表一起使用,我将向你们展示 我在工作代码中保存和加载的列表名为“m_日记”。保存方法如下所示: /// <summary> /// Saves the object information /// </summary> public void Save() { // Gain c
/// <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);
}
}
}
这段代码在我的windows窗体类中非常有效。
但现在Iv又增加了一个不同类型的列表
如何将第二个列表保存并加载到??)
致意
Cyrix您应该创建一个包含所有要保存的数据(列表)的类。然后将该类保存到文件。您应该创建一个包含所有要保存的数据(列表)的类。然后将该类保存到文件中。您可以使用第二个列表中类似的代码来完成此操作,也可以编写一个:
publicstaticvoidsave(字符串文件名,列表)
{
//获取我们要访问的文件的代码访问权限
//写信
尝试
{
//创建一个将数据写入文件的文件流。
使用(var stream=newfilestream(文件名,FileMode.Create,FileAccess.Write))
{
var formatter=新的二进制格式化程序();
序列化(流、列表);
}
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
以及加载方法:
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=新列表();
//检查我们以前是否保存过朋友的信息
//以前
if(File.Exists(fileName))
{
尝试
{
//创建文件流将获得对
//数据文件。
使用(var stream=newfilestream(文件名,FileMode.Open,FileAccess.Read))
{
var formatter=新的二进制格式化程序();
列表=(列表)
格式化程序。反序列化(流);
}
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
退货清单;
}
负载的使用:
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);
}
var list=新列表{“一”、“二”、“三”};
保存(“first.dat”,列表);
var list2=负荷(“第一个数据”);
foreach(列表2中的var变量)
{
控制台写入线(变量);
}
还要看处理 您可以在第二个列表中使用类似的代码,也可以编写:
publicstaticvoidsave(字符串文件名,列表)
{
//获取我们要访问的文件的代码访问权限
//写信
尝试
{
//创建一个将数据写入文件的文件流。
使用(var stream=newfilestream(文件名,FileMode.Create,FileAccess.Write))
{
var formatter=新的二进制格式化程序();
序列化(流、列表);
}
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
以及加载方法:
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=新列表();
//检查我们以前是否保存过朋友的信息
//以前
if(File.Exists(fileName))
{
尝试
{
//创建文件流将获得对
//数据文件。
使用(var stream=newfilestream(文件名,FileMode.Open,FileAccess.Read))
{
var formatter=新的二进制格式化程序();
列表=(列表)
格式化程序。反序列化(流);
}
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
退货清单;
}
负载的使用:
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);
}
var list=新列表{“一”、“二”、“三”};
保存(“first.dat”,列表);
var list2=负荷(“第一个数据”);
foreach(列表2中的var变量)
{
控制台写入线(变量);
}
还要看处理 几乎没有选择-将两个列表放入类中并序列化该类;将每个列表保存到不同的文件中;手动执行序列化|反序列化-在与当前问题相关的Litsun之间使用某种分隔符,但一定要查看与
FileStream
对象相关的;将每个列表保存到不同的文件中;手动执行序列化|反序列化-在与当前问题相关的Litsun之间使用某种分隔符,但请查看与FileStream
对象相关的。