【发布时间】:2011-05-05 08:56:57
【问题描述】:
有人有在磁盘上存储数据的经验吗?我拥有的是一个可以进行计算等的内存建模应用程序。基本上,数据存储为对象列表,这些对象列表具有嵌套的键值集合,例如 Dictionary>。
现在我使用 SQL-Server 作为持久层,但我很少使用它的特性。所以我想我可以自己将数据写入/读取到磁盘,以减少依赖并简化安装。
所以我写了一个小程序,将每个数组以大致这种格式写入磁盘,其中“ObjId”、“Type”、“Valid”和“Count”这些词实际上不在文件中,它们是第一个, 2nd, 3rd 和 byte[] 中的第 4 个 int,然后是 对。 52 来自 4 * 4 + 3 * (4 + 8)。 (int 4 字节,double 8 字节)
Bytes: 52
ObjId: 123
Valid: 234
Type: double
Count: 3
1 .23
2 .34
3 .45
在现实生活中没有缩进等,它们都是长流中的连续字节。
这很好,写一次。但是当我想在中间的某个地方写一个额外的值时,我必须重写整个东西。我也不能轻易更新单个值。
另一种方法是将每个对象写入一个单独的文件,这样我只需要重写它。但这似乎效率很低,因为我得到的文件是 1kb,但磁盘上有 4kB,所以我会在那里浪费空间。
那么我需要做什么才能逐步写入磁盘上的这个文件?我知道 SqlServer 在它写入数据的地方有“页面”,这是要走的路吗?
有没有准备好解决这类问题的库?也许一些虚拟文件可以让我将它们视为单独的 byte[] 但将存储作为单个 psysical 文件处理?理想的压缩..(推动它,但谁知道..我以前很惊讶:-)
提前致谢,
格特-简
【问题讨论】:
标签: c# file multidimensional-array disk