Как получить структуру каталогов за один вызов файловой системы? - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть приложение VSTO, которое просматривает каталог и перечисляет подпапки и файлы в листе Excel в определенном формате. В настоящее время я использую DirectoryInfo и FileInfo, но обработка занимает много времени. Каталог находится в общей сетевой папке. Похоже, что каждое перечисление на GetFiles или GetDirectories является отдельным вызовом файловой системы. На самом деле меня интересует только структура каталогов в определенной папке. Я просто хочу извлечь имена и пути к подпапкам и файлам. Есть ли определенный способ получить полный обзор этой структуры в одном обращении к файловой системе? Какие у меня варианты?

редактирование:

Я использую .NET 4.0

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Я не помню, чтобы было что-то, что получит все ваше дерево за один вызов.

Я знаю, что это не полное решение вашей проблемы, но вы можете перечислить через ваши каталоги и файлыв то время как они все еще загружаются, используя EnumerateDirectories и EnumerateFiles .К сожалению, это не уменьшает общее время загрузки, но часто появление прогресса уменьшает боль ожидания.

0 голосов
/ 20 ноября 2014

во всех дисках все каталоги c #

    public List<DirectoryInfo> getDirectoryStructure()
    {
        List<DirectoryInfo> drives = new List<DirectoryInfo>();
        string[] drives = System.Environment.GetLogicalDrives();
        foreach (string dr in drives)
        {
            System.IO.DriveInfo di = new System.IO.DriveInfo(dr);

            // Here we skip the drive if it is not ready to be read. This
            // is not necessarily the appropriate action in all scenarios.
            if (!di.IsReady)
            {
                continue;
            }
            drives.Add( di.RootDirectory);
        }
        return drives
    }

, чтобы найти определенный каталог, рекурсивно перечислять по подкаталогам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...