如何将字符串列表转换为现有对象列表
本文关键字:列表 对象 转换 字符串 | 更新日期: 2023-09-27 18:01:52
我想在我的Windows Phone 8应用程序中保存/恢复对象数据。对象是日志,每个日志都有自己的属性。日志的主列表名为logArray。
然而,在这种情况下,我不知道如何将保存的。txt文件转换回logArray,当应用程序启动时!下面是我的代码:
private async Task WriteToFile()
{
try
{
if (File.Exists("Logs.txt"))
{
File.Delete("Logs.txt");
}
StreamWriter write = new StreamWriter("Logs.txt");
//Write each log element to a new string line
foreach (Log element in logArray)
{
await write.WriteLineAsync();
}
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.ToString());
}
}
private async Task ReadFromFile()
{
try
{
//Variable definitions
StreamReader read = new StreamReader("Logs.txt");
List<String> lines = new List<String>();
String line;
if (File.Exists("Logs.txt"))
{
//Read each string line into a string list
while ((line = await read.ReadLineAsync()) != null)
{
lines.Add(line);
}
foreach (String element in lines)
{
//Convert String line to logArray object
}
}
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.ToString());
}
}
也许您应该考虑使用XML或JSON等标记语言进行序列化和反序列化,然后将文本存储到文件中。
使用简单car对象的XML序列化示例:
public static void WriteFile()
{
Car testCar= new Car();
string path = "c:'temp'testCarPath.xml";
XmlSerializer serializer = new XmlSerializer(typeof(Car));
StreamWriter file = new StreamWriter(path);
serializer.Serialize(file, testCar);
file.Close();
}
public static void ReadFile()
{
Car testCar;
string path = "c:'temp'testCarPath.xml";
XmlSerializer serializer = new XmlSerializer(typeof(Car));
StreamReader reader = new StreamReader(path);
testCar = (Car)serializer.Deserialize(reader);
reader.Close();
}
如果您正在询问如何将lines
变量(List<string>
)转换为字符串数组,那么这就是string[] logArray = lines.ToArray();
。
但是,如果您正在询问如何加载和保存数组或列表(字符串)到文本文件,那么以下内容涵盖了该内容,您可能想要阅读以简化您的代码。
我不明白为什么当人们真的只是想从文本文件中读写时,他们会弄乱StreamReader和StreamWriter。这就是你要问的吗?
为什么不直接使用File.WriteAllLines("logs.txt", lines);
将其写入文本文件?
你也可以使用List<string> lines = File.ReadAllLines("log.txt").ToList();
,或者如果你不需要一个列表,那么string[] lines = File.ReadAllLines("log.txt");
为一个简单的步骤。
当然,一旦数组或列表中的每一行都存储在内存中,你就可以随心所欲地对数据进行切片和切块。它们只是略过了20行不必要的代码。;)
编码快乐! !