加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#如何在不使用大量内存的情况下递归循环大量文件夹和文件

发布时间:2020-12-15 23:56:40 所属栏目:百科 来源:网络整理
导读:我想索引我的所有音乐文件并将它们存储在数据库中. 我有这个功能,我从音乐驱动器的根开始重复调用. 即 start ReadFiles(C:music);ReadFiles(path){ foreach(file) save to index; foreach(directory) ReadFiles(directory);} 这工作正常,但在运行程序时,使
我想索引我的所有音乐文件并将它们存储在数据库中.
我有这个功能,我从音乐驱动器的根开始重复调用.

start > ReadFiles(C:music);

ReadFiles(path){
   foreach(file)
      save to index;

   foreach(directory)
      ReadFiles(directory);
}

这工作正常,但在运行程序时,使用的内存量会增长和增长,最后我的系统内存不足.

有没有人有更好的方法,不需要4GB的RAM来完成这项任务?

最诚挚的问候,Tys

解决方法

Alxandr基于队列的解决方案应该可以正常工作.

如果您使用的是.NET 4.0,您还可以利用新的Directory.EnumerateFiles方法,该方法可以懒惰地枚举文件,而无需将它们全部加载到内存中:

void ReadFiles(string path)
{
    IEnumerable<string> files =
        Directory.EnumerateFiles(
            path,"*",SearchOption.AllDirectories); // search recursively

    foreach(string file in files)
        SaveToIndex(file);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读