如何将大量小文件合并到一个文件中

时间:2015-12-06 09:57:59

标签: c# archive

我有大约150万个小文件,总大小约为80 GB。

我想将这些文件合并到一个文件中以便快速复制。我试图将它们存档到一个zip文件中并使用以下代码读取文件:

ZipFile zip = ZipFile.Read(Settings.Default.DataPath); 
ZipEntry entery = zip[MyFile];

这个想法很有效,但速度太慢,加载一个文件大约需要30秒。

还有其他更快的想法来合并文件吗?

由于

1 个答案:

答案 0 :(得分:0)

一种方法是使用SQLite(您可以通过Nuget包添加它)并创建一个包含所有这些单独数据位的数据库文件。

您将创建一个包含所有文件的表,并将文件名作为主键,这将自动在其上创建索引:

CREATE TABLE files
(
    filename TEXT NOT NULL PRIMARY KEY,
    content BLOB
)

然后,您将所有文件插入其中,每个文件一行。

要检索它,您可以像这样执行SQL:

SELECT content FROM files WHERE filename = ?

我会将所有这些封装到一个新类中,以便您从应用程序的其余部分中分离出维护和使用此文件的功能。