您可以使用Streamreader()读取一行中的多个变量吗?

时间:2018-07-22 04:50:00

标签: c# arrays streamreader

我正在使用C#,想知道是否可以使用Runnable读取多个变量并加载到数组中? 这是一个示例:

我有一系列使用Streamwriter编写的不同类型

Streamreader.Readline()

它写出如下文本行:

  

万能真阿拉巴马州

当我回读它时,我唯一的选择是用foreach (Stuff stf in StuffArray) { sw.WriteLine(" " + stf.car+ " " + stf.carOwned + " " + stf.carLocation); } sw.Close(); 阅读整行。

我想像这样将其加载回去

Streamreader

所以我可以将它们放回数组或新数组中,就像提取时一样。

谢谢!

2 个答案:

答案 0 :(得分:2)

读取该行,对其进行解析(例如使用string.Split进行解析),然后获取已解析的标记并为变量重新补水。

您可能想使用单词,空格等更复杂的格式(例如,模型名称包含空格或纽约之类的地方的汽车)。选择一个不会出现在字符串中的分隔符。

或者更好的是,选择一种众所周知的序列化格式,例如XML或JSON。

答案 1 :(得分:0)

由于您自己创建字符串表示形式,因此100%确定其格式。在任何其他情况下,您都应该考虑一些更强大的功能,例如序列化为XML,然后将其写入文件。

根据您的情况,我建议创建Stuff的新集合并添加位于文件每一行的对象,例如:

List<Stuff> stuffItems = new List<Stuff>();
while(!streamReader.EndOfStream)
{
    string[] line = streamReader.ReadLine().Split(' ');
    stuffItems.Add(new Stuff(line[0], line[1], line[2]));
}

现在您可以根据需要使用此列表,例如覆盖列表中调用ToArray方法的旧方法,等等。

但是,我再次提醒您这种方法:更改格式(例如更改定界字符)时,会出现异常:)