我正在使用此庫http://www.codeproject.com/Articles/28064/Global-Mouse-and-Keyboard-Library來記錄宏。 我想知道如何將「事件」保存在文本文件中以便稍後加載它們?將數據從列表保存到文本文件
所以,這裏是名單:
List<MacroEvent> events = new List<MacroEvent>();
我需要做的數據獲取到一個文本文件是什麼?
我正在使用此庫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