【问题标题】:Design better text file format for reading mixed type data of variable length为读取可变长度的混合类型数据设计更好的文本文件格式
【发布时间】:2013-04-04 21:26:06
【问题描述】:

我正在设计一种用 C# 读取的文本文件格式。我需要在一行中存储类型:int、double 和 string。我打算使用 .CSV 格式,以便可以手动打开和读取文件。一个特定的记录可能有 8 种已知类型,然后是(字符串、整数、双精度)或(字符串、整数、双精度、双精度)的可变数量的“指示符”组合,并且某些行可能不包含“指示符”。因此,每条记录的长度可能是可变的。

在 VB6 中,我只需输入数据,将数据拆分成一个变体数组,然后确定数组中该行的元素数量,并使用 ***VarType 函数来确定最终的“指标”是否变量是 string、int 或 double 并相应地解析字段。

可能有更好的方法来设计文本文件,这可能是最好的解决方案。如果是这样,我有兴趣听到想法。我进行了搜索,但没有发现专门讨论将混合类型的可变长度文本行读入 C# 的问题。

如果没有更好的格式,有没有办法在 C# 中复制 VB6 VarType 函数,如上面两段所述***?我可以在 C# 中轻松处理文本文件读取和行拆分。

【问题讨论】:

    标签: c# text-files vb6-migration


    【解决方案1】:

    您可以使用 json 或 xml,因为它们在 .NET 中得到很好的支持并具有自动序列化功能

    【讨论】:

    • 上述两种格式是否支持像文本文件一样手动打开和读取内容?
    【解决方案2】:

    首先我同意 Keith 关于使用 Xml 或 JSON 的建议。你在这里重新发明了一个轮子。 This page 有一个介绍性示例,说明如何将对象序列化为文件以及一些指向更多信息的链接。

    如果您需要坚持使用自己的文件格式和自定义序列化/反序列化,请查看 Convert 类,以及与 int 和 double 等内在值类型挂钩的各种 TryParse 方法.

    【讨论】:

    • 关于手动打开和读取 Xml 或 JSON 格式(如文本文件)的能力的相同问题 - 可能吗?我熟悉 Convert 类和 TryParse。如果你不知道一个字段是字符串、整数还是双精度,有没有办法在尝试转换之前检查拆分字符串类型?
    • 查看xmlserializer类。它将为您处理类型转换
    • 感谢您的提示。我得到了一些使用 xmlserializer 的简单演示代码。我需要将一组类存储在一个文件中。是创建一个容器类来容纳类数组以便将其全部存储到单个对象/单个文件中的最佳方法吗?
    • 使用容器类似乎很有效,而且使用一系列类非常轻松。真的太棒了!
    • 是的,它很漂亮。将非常轻松地完成整个对象图
    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多