Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中合理地存储大量序列化的二进制文件?_C#_.net_Serialization_Zip - Fatal编程技术网

如何在C#中合理地存储大量序列化的二进制文件?

如何在C#中合理地存储大量序列化的二进制文件?,c#,.net,serialization,zip,C#,.net,Serialization,Zip,我正在将大量对象序列化为二进制文件,但是我希望所有内容都井然有序,并且不希望在一个文件夹中有数百个文件。是否有方法将它们分组到zip文件中,然后访问该zip中的各个文件 例如,假设我创建了100个二进制文件并将其压缩。我是否能够访问该zip中的单个文件并对其进行反序列化,而无需解压缩所有文件?是的,zip有一个允许跳转到特定文件的存档目录。如果您打算花更多的时间从存档中读取而不是更改它,这应该是有效的。如果您必须能够将更改提交回非易失性存储,那么除了zip之外的其他格式会更好 您可以尝试的另一种

我正在将大量对象序列化为二进制文件,但是我希望所有内容都井然有序,并且不希望在一个文件夹中有数百个文件。是否有方法将它们分组到zip文件中,然后访问该zip中的各个文件


例如,假设我创建了100个二进制文件并将其压缩。我是否能够访问该zip中的单个文件并对其进行反序列化,而无需解压缩所有文件?

是的,zip有一个允许跳转到特定文件的存档目录。如果您打算花更多的时间从存档中读取而不是更改它,这应该是有效的。如果您必须能够将更改提交回非易失性存储,那么除了zip之外的其他格式会更好

您可以尝试的另一种方法是将blob(二进制大对象)存储在轻量级数据库中。

您可能需要使用一种用于结构化存储的文件格式和一组库来使用它

我仍然没有使用过它,但我必须在未来的项目中采用它。从他们的网站上引用:

HDF5是一个数据模型、库和 用于存储和管理的文件格式 数据。它支持无限的 多种数据类型,并且 实现灵活高效的I/O和 用于高容量和复杂数据。HDF5 具有可移植性和可扩展性, 允许应用程序在 他们使用HDF5。HDF5技术 套件包括工具和应用程序 用于管理、操作、查看、, 以及分析HDF5格式的数据

HDF5技术套件包括:

  • 一个通用的数据模型,可以 表示非常复杂的数据对象 以及各种各样的元数据

  • 一种完全可移植的文件格式,具有 对数据的数量或大小没有限制 集合中的对象

  • 软件 在一系列 计算平台,来自笔记本电脑 大规模并行系统,以及 使用C实现高级API, C++、FORTRAN 90和java接口。
  • 一套丰富的综合性能 允许访问时间的功能 以及存储空间优化。工具 以及管理的应用程序, 操纵、查看和分析 集合中的数据


我知道他们提供了一个,安迪,你也可以找到它的一些用途

也许节省空间,但似乎根本不节省访问时间。从1GB HDF5文件读取<1MB的数据花费了很长时间,我不得不假设它读取了整个文件。而这是在固态驱动器上进行的,所以寻道时间不能解释低效的随机访问。