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

发布于 2024-09-23 23:57:36 字数 176 浏览 4 评论 0原文

我正在将大量对象序列化为二进制文件,但是我希望将所有内容整齐地组织起来,并且并不真正希望在一个文件夹中包含数百个文件。是否有办法将它们分组为 zip 文件,然后访问该 zip 中的各个文件?

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

I'm serializing a large number of objects to binary files, however I want to keep everything neatly organized and don't really want hundreds of files in a folder. Is there anyway to group them into zip files, and then access the individual files within that zip?

For example, say I created 100 binary files and zipped them. Would I be able to access a single file in that zip and deserialize it without unzipping everything?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

茶花眉 2024-09-30 23:57:36

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

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

Yes, zip has an archive directory that allows jumping to a specific file. If you intend to spend much more time reading from the archive than changing it, this should be effective. If you have to be able to commit changes back to the non-volatile storage, then some other format besides zip would be better.

Another approach you could try would be storing blobs (binary large objects) in a lightweight database.

谈情不如逗狗 2024-09-30 23:57:36

您可能想要使用 HDF5,这是一种用于结构化存储的文件格式和一组可使用的库它。

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

HDF5 是一个数据模型、库和
用于存储和管理的文件格式
数据。它支持无限
多种数据类型,并且被设计
用于灵活高效的 I/O 和
适用于大量且复杂的数据。 HDF5
是便携且可扩展的,
允许应用程序不断发展
他们使用 HDF5。 HDF5 技术
套件包括工具和应用程序
用于管理、操作、查看、
并分析HDF5格式的数据

HDF5 技术套件包括:

  • 一种多功能数据模型,可以
    表示非常复杂的数据对象
    以及各种各样的元数据。

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

  • 一个软件
    运行在一系列的库
    计算平台,从笔记本电脑
    大规模并行系统,以及
    用 C 实现高级 API,
    C++、Fortran 90 和 Java 接口。

  • 丰富的集成性能
    允许访问时间的功能
    和存储空间优化。工具
    和管理应用程序,
    操作、查看和分析
    集合中的数据。

我知道他们提供了.net 的包装,你可以还可以找到一些其使用的 c# 示例

You may want to use HDF5, a file format for structured storage and a set of libraries to work with it.

I still never used it, but I have to adopt it on a future project. Quoting from their site:

HDF5 is a data model, library, and
file format for storing and managing
data. It supports an unlimited
variety of datatypes, and is designed
for flexible and efficient I/O and
for high volume and complex data. HDF5
is portable and is extensible,
allowing applications to evolve in
their use of HDF5. The HDF5 Technology
suite includes tools and applications
for managing, manipulating, viewing,
and analyzing data in the HDF5 format

The HDF5 technology suite includes:

  • A versatile data model that can
    represent very complex data objects
    and a wide variety of metadata.

  • A completely portable file format with
    no limit on the number or size of data
    objects in the collection.

  • A software
    library that runs on a range of
    computational platforms, from laptops
    to massively parallel systems, and
    implements a high-level API with C,
    C++, Fortran 90, and Java interfaces.

  • A rich set of integrated performance
    features that allow for access time
    and storage space optimizations. Tools
    and applications for managing,
    manipulating, viewing, and analyzing
    the data in the collection.

I know they provide a wrapper for .net, andy you can also find some c# example of its use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文