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

时间:2015-07-16 08:57:55

标签: c# .net windows winforms storage

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

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

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

这种应用程序的最佳数据存储是什么? 由于我没有任何数据库,因此我必须将数据存储在应用程序中(或至少存储在应用程序目录中的某些数据文件中)。我相信.txt文件很慢而且非常糟糕:)

你能提出什么建议?我想我会使用Windows Form。 SQLite的?

3 个答案:

答案 0 :(得分:0)

将文件存储为JSON。因为你需要创建一个只是名称/路径对列表的字典,所以这几乎就是json的设计目的。 序列化字典到Json并在本地存储。稍后只需deSerialized并传递名称作为密钥,您将获得文件路径。 有一些不错的免费.NET json库

答案 1 :(得分:-1)

我建议您使用.xml文件,即使它并不真正建议数据存储,例如:

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

答案 2 :(得分:-1)

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

由于您希望获得最高性能,因此您需要进程内存存储,而不是基于Windows服务的存储。

如果您的数据写入量较少且数据读取量很大,那么我建议您对数据进行排序,写入固定大小的行数据文件,并使用Binary Chunk机制查找密钥你要。使用相当高的缓冲区大小打开数据文件并保持打开状态,使用Seek移动固定大小的记录。写入数据时,将其添加到未排序块中的文件末尾,直到未排序的块超过某个限制,然后重新排序整个文件并重新写入。当通过二进制块搜索时,如果找不到您所关注的密钥,则搜索未分类的添加内容。

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