【求算法】如何较快的加载文件夹内的千万级别的文件
文件夹A下面,有很多文件(约上千万个)
需求:
以较快的速度遍历该根目录下的所有文件,把文件内容写入到一块大内存中,并把文件名记录到一个一维数组中。
分析:
因为是加载所有的文件,而文件的特征就是:文件名全是数字,扩展名统一。
单个线程通过递归的方式来遍历所有文件,然后打开,读取,关闭,效率不高。
但是如果使用多线程共同加载的话,,各个线程间如何区分各自要扫描加载的文件,又是个问题。
有没有些建议或者思路?欢迎来谈谈。
[最优解释]
上千万个文件恐怕不能放到数组里(数组太大造成出现堆破坏的提示),可以放到映射文件里,同样,文件也和映射文件关联,这样文件内容操作速度能快些.
如果文件名的数字有规律,就可以开多个线程,按数字的大小来分配每个线程遍历文件的范围.如果没有规律,那就开一个线程.主要是在查找上费时间,因为用映射文件后就相当于在内存上操作