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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |