【发布时间】:2013-05-23 19:36:01
【问题描述】:
我有一个类似数据模型的表:
fieldA (10 chracters UTF-8)
fieldB(12 characters UTF-8)
fieldC (11 characters UTF-8)
每个字段都是固定长度并写入一个文件(磁盘上的本地文件),没有任何 UTF-8 编码的分隔符(使用 StreamWriter 编写)。生成的文件如下所示:
fieldAfieldBfieldCfieldAfieldBfieldC [...]
我也知道记录的数量,可以使用 BaseStream.Seek() 随机访问文件。
假设我想读取第 29 条记录并填充我的数据模型,什么是有效(快速)的方法?我可以使用 StreamReader 并读取单个字符,但由于 UTF-8,这不是问题吗?我不想在我的数据中添加逗号并使用字符串拆分方法 - 我希望在 C# 中有更好的方法。
这不是用于生产用途,欢迎进行疯狂和微优化 :)
感谢您的帮助!
【问题讨论】:
-
来吧,我想在我发布问题 10 秒后格式化我的帖子,@Carlos Landeras 已经这样做了?你是机器人兰德拉斯先生吗?
-
不 :)。我是一个人:)
-
在 UTF-8 中,一个字符被编码为 1 到 4 个字节。因此,如果您有
fieldA(6 个字符)后跟fieldB,那么fieldB可以从 1*6=6 到 4*6=24 之间的任何偏移量开始。如果不首先解码fieldA,就无法确定这一点。可能的解决方案:将每个字段填充到固定数量的字节,而不是字符。
标签: c# windows filestream