将数据从列表保存到文本文件
我正在使用此库http://www.codeproject.com/Articles/28064/Global-Mouse-and-Keyboard-Library来记录宏。 我想知道如何将“事件”保存在文本文件中以便稍后加载它们?将数据从列表保存到文本文件
所以,这里是名单:
List<MacroEvent> events = new List<MacroEvent>();
我需要做的数据获取到一个文本文件是什么?
你有3种选择:
使用toString()方法,以便将MacroEvent导出到一个格式化文本。您可能需要重写默认实现。请务必提供您需要的所有信息,否则您将无法在稍后检索它们。读取和解析文件然后需要加载数据。
-
使用内建的.net XML序列化功能。写/读操作很简单。
-
如果不使用另一应用程序的数据计划,为什么不使用BinarySerializer?到目前为止,最好的方法,但结果文件不会是文本格式。
http://www.codeproject.com/Articles/1789/Object-Serialization-using-C
如果MacroEvent
有一个ToString()
方法可用,您可以简单地遍历列表并打印到您的文本文件。
TextWriter tw = new StreamWriter("myFile.txt");
foreach (MacroEvent item in events)
{
tw.WriteLine(item.ToString());
}
tw.Close();
我已经有这样的尝试,但它不工作。 我在文本文件中只显示“GlobalMacroRecorder.MacroEvent”。 感谢您的答案:) – user1410644 2012-08-14 13:30:20
我会建议使用扩展方法。我对MacroEvent
一无所知,我不打算从代码项目中下载代码,只是为了看一看,但这里是它的样子。
public static class MacroEventExtensions
{
public static void WriteToFile(this List<MacroEvent> events, string path)
{
StringBuilder fileContents = new StringBuilder();
foreach (var e in events)
{
fileContents.AppendLine("{0}::{1}",
[some event id from the object],
[some event message from the object]);
}
File.WriteAllText(path, fileContents.ToString());
}
}
然后在上面的代码中,您只要致电:
events.WriteToFile([some path])
BinarySerializer是完美的。谢谢! – user1410644 2012-08-14 14:19:57