与应用程序一起存储数据的最快方式是什么?

我需要创build一个应用程序,浏览PC上的目录(文件),并列出它们(每个文件的path)。

由于后来我需要随机重新排列这个列表,我想将它存储在一个数据结构中,快速且容易地调用和pipe理(即每次打开应用程序时我不想浏览PC文件列表)。

所以,一旦扫描,存储列表并使用它,直到我不再扫描PC(现在,以及将来当我需要使用这个应用程序)。

什么是这种应用程序的最佳数据存储? 由于我没有任何数据库,数据必须存储在应用程序我猜(或至less在应用程序目录内的一些数据文件)。 我相信.txt文件是缓慢和可怕的:)

你能提出什么build议? 我想我会使用Windows窗体。 SQLite的?

我可以说,文件类型或扩展名不会有所作为,这里的关键是如何在这个文件内部构造数据,以便快速写/读。
在你的情况下,我会建议使用复合模式和.xml文件来存储文件路径和结构供以后使用。

将文件存储为JSON。 既然你需要做一个字典,这只是一个名称/路径对列表,那么这几乎是什么JSON的设计。 序列化的字典Json和本地存储。 后来只是deSerialized和通过名称作为关键你会得到文件路径。 有相当一些体面的,免费的.NET JSON库

我建议你使用.xml文件,即使它不是真的建议数据存储,例如:

 <file> <path> <name> <size> ... <file> 

您的要求是随机访问,因此您可以使用键控字典数据源(假设您的密钥已由其他进程或用户随机选择)。 如果您正在存储文件名,那么这些文件的最大大小是固定的,这意味着您可以使用一些非常古老但非常快速的技术。

既然你想要最高的性能,你将需要一个进程内存,而不是一个基于Windows服务的商店。

如果您的数据写入量较低,数据读取量很大,那么我建议您对数据进行排序,写入固定大小的行数据文件,然后使用Binary Chunk机制来查找所需的密钥。 使用相当高的缓冲区大小打开数据文件,并保持打开状态,使用Seek移动固定大小的记录。 写入数据时,将其添加到未排序块的文件末尾,直到该未排序块超过一定限制,然后重新排序整个文件并重新写入。 当通过二进制块进行搜索时,如果您没有找到您之后的密钥,则搜索未排序的添加项。

二进制块是超快速的,并防止你需要维护一个索引。 无论您的数据集在选择性和传播方面多么不平衡,这都是有效的。