C# 组合文件可直接访问

本文关键字:访问 可直接 文件 组合 | 更新日期: 2023-09-27 17:56:02

我正在用C#创建一个非常简单的数据库,用于存储播放列表和所有音乐的概述。我想使这个C兼容,将来我计划使它完全基于文本。这个想法是每个文本文件都是一个表,内容是JSON格式,其中每行文本都是一条记录。

我不想为每个数据库提供松散的文件,所以我正在考虑像 zip 文件这样的东西。我不想每次访问文件时都提取和压缩。有没有办法在 C# 中使用流读取器/编写器来处理窗口只看到一个文件的不同文件?

我不完全相信这是要走的路。所以我愿意接受建议。

更新我目前正在弄乱 C# 中的"本地数据库"项。我从来没有注意过它。这很可能是解决方案。

更新2,SQLite似乎非常简单。我过去在一些 php 项目中有一些 MySQL 的经验,所以这将使我领先一步。

C# 组合文件可直接访问

您想将文件用作包含不同文件的容器吗?如果是这样,有很多方法可以实现这一点。这些是我过去使用的技术:

  • 邮编:

众所周知,压缩文件(例如 Zip)可以用作您感兴趣的解决方案。它能够存储虚拟文件。它们的大小可以变化到至少 1 GB(testet,但我目前不知道是否有基于实现的大小限制)。

  • SQLite:

SQLite听起来很老派,但它将所有与数据库相关的东西存储到一个物理文件中。为每个虚拟文件创建一个带有表的数据库应该可以解决问题。如果您知道虚拟文件的大小不会使用大量字节,或者也不会达到 sqlite 字段数据类型的任何限制,则此方法很有用。由于您的虚拟文件将使用文本行,因此您可以形成属性和元组。这样,您甚至可以根据需要使用 SQL 特定语句来查询和过滤数据。

还有更多方法可以自己实现这种容器格式,但可能需要投入更多的时间和工作,而不是从中付出努力。请继续关注更好的想法,并可能准备使用实现:-)

你会尝试在数据之间搜索吗?然后使用真正的数据库管理器,在 C# 中,内置的本地数据库文件是最简单的选择(如果您熟悉 SQL)。zip 文件是数据空间和紧凑性(单个文件而不是多个文件)的不错选择,但它非常慢:对于每个数据库操作,整个 zip 文件将被重新组织。即使是 tar 文件(不压缩)也需要在内容更改时连续重新分配,而 zip 文件需要额外的计算和重新定位。如果你想要一些压缩的东西,仍然是标准的,你可以使用OpenXML(ods或xlsx,没关系)来存储你的数据,但随着数据库的增长,保存操作会很慢,甚至更慢。