- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我处理文本数据时,我会使用优秀的 FileHelpers 库。它允许我非常轻松地将文本字段从文件或内存中的字符串转储到表示数据的类中。
在使用基于大端微 Controller 的系统时,我需要读取串行数据流。为了在非常有限的微 Controller 平台上节省空间,我需要编写包含各种多字节类型字段的原始二进制数据(本质上只是将结构变量转储到串口之外)。
我喜欢 FileHelpers 的架构。我创建了一个代表数据的类,并用告诉引擎如何将数据放入类中的属性对其进行标记。我可以为引擎提供一个表示单个记录的字符串,并获得数据的反序列化表示。然而,这与对象序列化的不同之处在于原始数据不以任何方式分隔,它是一种简单的二进制固定记录格式。
FileHelpers 可能不适合读取这样的二进制数据
它无法处理显示的空值和
* 我怀疑可能存在 unicode 问题(引擎将输入作为字符串,所以我必须从串行端口读取字节并将它们转换为 unicode 字符串,然后再转到我的数据转换器类)。作为一项实验,我已将其设置为读取二进制流和
只要我小心不发送空值
,它目前运行良好。很容易设置新的转换器来读取原始数据并解决字节序格式化问题等。目前它
在空值上失败并且
不能处理多个记录(它期望记录之间有 CRLF)。
我想知道的是,是否有人知道与 FileHelpers 类似但旨在处理二进制数据的开源库。
我正在考虑从 FileHelpers 派生一些东西来处理这个任务,但看起来应该已经有一些东西可以用来做这个了。
*事实证明,它不会提示输入流中的空值。我的测试程序中出现了一个不相关的错误,该错误出现在我预计会出现空值问题的地方。应该先深入调查一下!
最佳答案
我没有用过filehelpers,所以无法直接比较;然而,如果你有一个代表你的对象的对象模型,你可以尝试 protobuf-net ;它是 .NET 的二进制序列化引擎,使用 Google 的紧凑型“ Protocol Buffer ”有线格式。比 xml 之类的东西效率高得多,但无需编写所有自己的序列化代码。
请注意,“ Protocol Buffer ”确实在字段之间包含一些非常简洁的标记(通常为一个字节);这增加了一个小填充,但大大提高了版本容错性。对于“打包”数据(即来自数组的整数 block ),如果需要可以省略。
所以:如果你只是想要一个紧凑的输出,它可能会很好。如果您需要特定输出,可能就没那么需要了。
披露:我是作者,所以我有偏见;但它是免费的。
关于c# - 用于二进制数据的类似 FileHelpers 的数据导入/导出实用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185981/
我正在使用 Filehelpers 读取一个简单的 CSV 文件 - 该文件只是一个键值对。 (字符串, int64) 我为此编写的 f# 类型是: type MapVal (key:string,
这是我确定非常容易的事情之一,但我似乎无法解决! 使用 FileHelpers,如何确保导出中的每个字段都包含双引号?我猜有一个属性我可以放在每个字段上,我想在它周围加上双引号,但我看不到它在哪里。
这是我要读取的数据: "Adam C. Emality","1Z620Y1V034826","14.40" "Ethel Baeron","1Z620Y1V034604","15.19" "Donna
我一直在查看 filehelpers 文档,但似乎没有任何内容可以处理列中的空值。我需要能够在所有列上设置“非空”字符串属性。 谁能指出我正确的方向? 最佳答案 您可以在 AfterReadRecor
我有一个 csv 文件,我正在使用 FileHelpers 进行解析,并且我遇到了引号和逗号都可以出现在字段中的情况: 逗号: 323,"PC","28/02/2014","UNI001","5000
我最近的项目要求我读取 csv 文件。人们将我引向 filehelpers,因为“你不应该重新发明轮子”。但是,文档真的很烂,我似乎找不到处理可选引号的方法。这是我的 csv: 2734000585,
我想知道当它从一个文件中读取一个流时,你能告诉它只取 x 行吗?假设你想要文件中的 100 行,你可以告诉它只取前 100 行(忽略第一行,因为它是标题)。即使文件有 200 行? 最佳答案 您可以使
我有一个从网络服务中使用的类,我正尝试使用 FileHelpers 库将其导出到 csv。但是该类有一个 PropertyChangedEventHandler 引擎正在将其读取为一个字段,所以我得到
我用的是强大的FileHelpers Library .但是是否有内置的方法来搜索生成的对象。 var engine = new FileHelperEngine(); var res = engin
下面的代码用于在 ASP .NET MVC2 中使用 FileHelpers 读取固定宽度的上传文件内容文本文件 第一行和最后一行的长度较小,ReadStream 因此导致异常。所有其他行都有适当的固
在这里,我必须使用 FileHelpers 和 C# 写出一个文件,其中的记录是管道分隔的。大部分字段具有可变长度(因此,我的记录将是 [DelimitedRecord("|")] )。但是有些字段必
我正在使用 FileHelpers 库的 2.0 版,该库被记录为能够处理 .NET 2.0 可空类型。 我正在使用文档示例中给出的代码: [DelimitedRecord("|")] publi
我正在使用 FileHelper 2.0 来解析我的 csv 数据。是否有 filehelper 可以正确处理转义分隔符的选项?它可以将字段识别为数据而不是分隔符。 我们的 csv 格式:用\, 转义
我想知道如何在 filehelpers 中执行多个日期?似乎您必须指定要支持的每一种格式(有点糟糕......希望它可以处理更多基本格式)。 [FieldOrder(1), FieldConve
我有一个从另一个系统导出的 CSV 文件,其中的列顺序和定义可能会更改。我发现 FileHelpers 非常适合读取 csv 文件,但除非您在编译应用程序之前知道列的顺序,否则您似乎无法使用它。我想知
使用 FileHelper .Net 库,我可以以某种方式跳过源文件中的一些列吗? 根据文档和示例,我必须为所有列添加字段。唉,我有一个包含 216 列的 Excel 表要导入,其中只需 13 列。
我正在使用 FileHelpers 读取一个大文件图书馆。我想在阅读下面的记录之前更改 RecordLine。 static void engine_BeforeReadRecord(objec
假设我有一个像这样的 Filehelpers 类: [DelimitedRecord(",")] public class SomeRecord { public string Field1;
我正在使用优秀的 FileHelpers 库导入许多 csv 文件,但遇到了问题。我有一个包含这三个示例行的 csv 文件 id,text,number 120,"good line this one
我正在使用 FileHelpers创建固定长度的文件。在我的模型中,我有一个 double 需要以 0000.00 格式输出。无论如何我可以用 FileHelpers 本身指定它,还是我需要将我的模型
我是一名优秀的程序员,十分优秀!