读取自定义文件时,对其内容的解读

cpycpy000 2017-01-20 10:27:09
如题,我在编写一个自定义文件的时候,自定义了一些头信息,然后这些头信息我需要用特殊的字符进行分割。
然后问题来了....
说实话我没接触过字节级别的操作...
然后我在纠结要用什么字符来作为分割标志,以及该怎么在读取的时候进行识别...
(因为没有这方面的经验,也不知道该查什么资料...
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpycpy000 2017-01-22
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
[quote=引用 2 楼 cpycpy000 的回复:] [quote=引用 1 楼 caozhy 的回复:] 个人感觉,你直接用sqlite之类的精简本地数据库存储数据比较好。没必要从文件结构层面自己设计
唔,这个文件是有用处的,而不是单独的一堆数据, 比如这个文件里会存放多张图片,然后可以动态播放, 但是不清楚该怎么分隔各个图片,以及怎么识别分隔符....[/quote] 如果是一堆二进制,那么更应该有“数据结构”的知识,再来设计。 例如文件一开始是一个指针,指向一个数据对象结构(比如说是全局说明对象)的偏移地址。而这个数据对象中多个属性,可能又是其它数据结构(比如说是n个图片的链表对象)的偏移地址指针。而图片链表对象,可能是图片的说明、图片的二进制数据长度、数据内容,下一个图片的偏移地址、上一个图片的地址........ 同时你要知道如何删除一个对象(同时将链表接续起来),如何在文件中查找空闲块而插入一个对象。 这些都是数据结构知识为基础,提高到所谓的“字节级别的操作”。因为里边用到了“数据块、空闲列表、链表、索引”等等数据结构。没有这些动态数据结构的直观的想象力,你就不知道往文件中写什么字节。[/quote] 嗯...谢谢您的建议。 我现在是直接抛弃了分隔符的想法..直接用 长度 + 数据内容 来放置... 想了半天总觉得判断分隔符还不如直接定长读取更快... 该去补习一下数据结构了Orz
  • 打赏
  • 举报
回复
引用 2 楼 cpycpy000 的回复:
[quote=引用 1 楼 caozhy 的回复:] 个人感觉,你直接用sqlite之类的精简本地数据库存储数据比较好。没必要从文件结构层面自己设计
唔,这个文件是有用处的,而不是单独的一堆数据, 比如这个文件里会存放多张图片,然后可以动态播放, 但是不清楚该怎么分隔各个图片,以及怎么识别分隔符....[/quote] 如果是一堆二进制,那么更应该有“数据结构”的知识,再来设计。 例如文件一开始是一个指针,指向一个数据对象结构(比如说是全局说明对象)的偏移地址。而这个数据对象中多个属性,可能又是其它数据结构(比如说是n个图片的链表对象)的偏移地址指针。而图片链表对象,可能是图片的说明、图片的二进制数据长度、数据内容,下一个图片的偏移地址、上一个图片的地址........ 同时你要知道如何删除一个对象(同时将链表接续起来),如何在文件中查找空闲块而插入一个对象。 这些都是数据结构知识为基础,提高到所谓的“字节级别的操作”。因为里边用到了“数据块、空闲列表、链表、索引”等等数据结构。没有这些动态数据结构的直观的想象力,你就不知道往文件中写什么字节。
  • 打赏
  • 举报
回复
引用 4 楼 cpycpy000 的回复:
[quote=引用 3 楼 johnliuyuan 的回复:] 为什么不用list呢
_(:3ゝ∠)_不是用不用list,而是我想把这些信息加上分隔符写进文件中... 然后不清楚到底该用什么分隔符才能保证不会取错文件,以及该怎么读取这些分隔符[/quote] “分隔符”的前提是你对于数据内容本身已经提高了一个设计层次。例如 json 格式是一个高级的表达数据的格式,那么一个对象的json 内容就可以写在字符串的“一行”上,那么不同的 json 对象之间就能用换行或者换行回车等等来表达,因为json 协议标准已经转义了换行、回车之类的的字符,json 是一个比“什么都不管,随便写字符串”要更高层次的协议。 因此,你在选择“分隔符”之前,先要提高自己的协议设计水平,你自己发明一种类似 json、xml、指定定长内容空间(多余部分用\0来填充,等等协议。不能直接硬要打破脑袋去“想”一个分隔符。
zj_zwl 2017-01-22
  • 打赏
  • 举报
回复
简单点,你可以把自定义类序列化成文件,稍复杂点你可以自定义文件,在头部写上各文件的字节长度信息
Justin-Liu 2017-01-22
  • 打赏
  • 举报
回复
这个可以自己定啊
threenewbee 2017-01-21
  • 打赏
  • 举报
回复
个人感觉,你直接用sqlite之类的精简本地数据库存储数据比较好。没必要从文件结构层面自己设计
cpycpy000 2017-01-21
  • 打赏
  • 举报
回复
引用 3 楼 johnliuyuan 的回复:
为什么不用list呢
_(:3ゝ∠)_不是用不用list,而是我想把这些信息加上分隔符写进文件中... 然后不清楚到底该用什么分隔符才能保证不会取错文件,以及该怎么读取这些分隔符
john_QQ:2335298917 2017-01-21
  • 打赏
  • 举报
回复
为什么不用list呢
cpycpy000 2017-01-21
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
个人感觉,你直接用sqlite之类的精简本地数据库存储数据比较好。没必要从文件结构层面自己设计
唔,这个文件是有用处的,而不是单独的一堆数据, 比如这个文件里会存放多张图片,然后可以动态播放, 但是不清楚该怎么分隔各个图片,以及怎么识别分隔符....

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧