AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2017, 12:27   #1  
ryik is offline
ryik
Участник
 
2 / 12 (1) ++
Регистрация: 13.11.2017
Адрес: Киев
Цитата:
Сообщение от MazZzDaI Посмотреть сообщение
Можем улучшить приложение совместно - кидайте ChangeRequest в GutHub
На выходе функции "SearchFiles" будет foundFiles со списком файлов найденных в папке(rootDirectory) и ее подпапках согласно заданному критерию поиска (SearchPattern), за исключением папок и файлов с ошибками доступа. В myLogFile будет записан лог с добавленными файлами для изменений и ошибками доступа.

Код:
private List<string> foundFiles = new List<string>();

private void SearchFiles(string myLogFile, string rootDirectory, string SearchPattern) // Search Document at disks by its pattern
        {
            var Coder = Encoding.GetEncoding(65001);
            File.AppendAllText(myLogFile, ";Changing history:\n", Coder);

            Stack<string> dirs = new Stack<string>(100);

            if (!Directory.Exists(rootDirectory))
            { throw new ArgumentException(); }
            dirs.Push(rootDirectory);

            while (dirs.Count > 0 )
            {
                string currentDir = dirs.Pop();
                string[] subDirs;
                try { subDirs = Directory.GetDirectories(currentDir); }
                catch (UnauthorizedAccessException e)
                {
                    File.AppendAllText(myLogFile, "; Wrong Access to the Folder:  " + currentDir + " \n", Coder);
                    continue;
                }
                catch { continue; }

                string[] files = null;
                try
                { files = Directory.GetFiles(currentDir); }
                catch (UnauthorizedAccessException e)
                {
                    File.AppendAllText(myLogFile, "; Wrong Access to Files in the Folder:  " + currentDir + " \n", Coder);
                    continue;
                }
                catch { continue; }
                foreach (string file in files)
                {
                    try
                    {
                        FileInfo fi = new FileInfo(file); 
                        if (fi.FullName.ToString().ToLower().Contains(SearchPattern) == true) 
                        {
                            File.AppendAllText(myLogFile, fi.FullName + " - add to list\n", Coder);
                            foundFiles.Add(fi.FullName, Coder);
                        }
                    }
                    catch (FileNotFoundException e) 
                    { 
                    File.AppendAllText(myLogFile, "; The File was deleted" + " \n", Coder);
                    continue; 
                    } 
                    catch { continue; }
                }
                foreach (string str in subDirs)
                { dirs.Push(str); }
            }
        }
Теги
ax7, d365, label

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxinsight: AX7/D365/Operations: Enable/Disable form control in X++ Blog bot DAX Blogs 0 14.09.2017 13:11
dynamicsaxinsight: AX7/D365/Operations: Create custom data entity Blog bot DAX Blogs 0 14.09.2017 13:11
dynamicsaxinsight: AX7/D365/Operations: Data import using data entities Blog bot DAX Blogs 0 14.09.2017 13:11
patrickmouwen: 1yr with AX7 Data Management – My top 12 learnings Blog bot DAX Blogs 2 12.10.2016 15:14
patrickmouwen: AX7 – My top 12 highlights Blog bot DAX Blogs 0 27.02.2016 13:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:51.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.