跨窗口的大容量分布

时间:2017-09-22 13:34:58

标签: c# .net filesystems

我正致力于开发存储,检索和存档程序。

我想管理大量文件(每天50万)。每个文件的大小为20kb到30kb。

我遇到的情况是,如果我在单个文件夹中放入太多文件,通过Windows资源管理器或程序访问该文件夹的速度较慢。

我已经看到了一些解决方案(不知道他们是怎么做的),他们有像0,1,2,... 99这样的文件夹,他们以相同的数量或大小分发文件。

是否有任何算法或.net程序可用于执行此操作。

感谢您的期待,......

1 个答案:

答案 0 :(得分:2)

考虑使用git方法。从文件名计算哈希值并使用其前几个字节作为目录名称。这将确保整个目录中的文件分布均匀:

public static string GetDirName(string fileName)
{
    if (hashAlgo == null)
        hashAlgo = new SHA256CryptoServiceProvider();

    return BitConverter.ToString(
        hashAlgo.ComputeHash(Encoding.UTF8.GetBytes(fileName))
            .Take(2).ToArray()
    );
}

完整演示:https://dotnetfiddle.net/xlu4P8