我想索引我所有的音乐文件并将它们存储在数据库中。 我有这个功能,我从我的音乐驱动器的根开始调用。
即
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);
}
关于C# 如何在不使用大量内存的情况下递归循环大量文件夹和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240334/