Ниже приведен мой код для получения всех файлов в большой директории (Framework 3.5). Это работает ~ 1 час, но не может закончить, память в диспетчере задач до 1 600 000 К
void ApplyAllFiles(DirectoryInfo dir)
{
String space = " ";
foreach (FileInfo f in dir.GetFiles())
{
try
{
int size = Convert.ToInt32(f.Length / 1024);
if (size > filesize && isFileType(f.FullName) == true)
{
pw.WriteLine(f.LastWriteTime + space + size + space + f.FullName);
}
}
catch
{ }
}
foreach (DirectoryInfo d in dir.GetDirectories())
{
try
{
ApplyAllFiles(d);
}
catch
{
}
}
}
Если я использую код Java, только 5 минут для финиша и память всегда <100 000 К. Я думаю, что код C # может иметь проблемы (getFiles & getDirectories не подходит для больших каталогов). Я надеюсь, что кто-то может помочь. </p>
Я решил это, запустив петлю в каждой попытке {}.