Tys*_*Tys 3 c# recursion out-of-memory fileinfo
我想索引我的所有音乐文件并将它们存储在数据库中.我有这个功能,我从音乐驱动器的根开始重复调用.
即
start > ReadFiles(C:\music\);
ReadFiles(path){
foreach(file)
save to index;
foreach(directory)
ReadFiles(directory);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但在运行程序时,使用的内存量会增长和增长,最后我的系统内存不足.
有没有人有更好的方法,不需要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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2439 次 |
| 最近记录: |