Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Работа с каталогами (папками)Содержание книги
Поиск на нашем сайте Для решения этих задач можно использовать класс DirectoryInfo. Для начала с помощью свойства RootDirectory класса DriveInfo получим доступ к объекту DirectoryInfo, представляющему корневой каталог некоторого диска (в примере – второго диска): DirectoryInfo rootDir = allDrives[1].RootDirectory; Console.WriteLine(rootDir.FullName); //выводит полное имя Далее выведем список имен подкаталогов корневого каталога. Здесь используется метод GetDirectories: Console.WriteLine("Подкаталоги"); foreach (DirectoryInfo di in rootDir.GetDirectories()) Console.WriteLine(" {0}",di.Name); Аналогично с помощью метода GetFiles выведем список имен файлов (объекты FileInfo): Console.WriteLine("Файлы"); foreach (FileInfo fi in rootDir.GetFiles()) Console.WriteLine(" {0}", fi.Name); Часто приходится осуществлять перебор каталогов не только непосредственно внутри заданного каталога, но и на всю глубину вложенности. Для этого обычно реализуют рекурсивный алгоритм, подобный следующему: static void TraverseDirectory(DirectoryInfo curDir, string level) { Console.WriteLine(level + curDir.Name); foreach (DirectoryInfo di in curDir.GetDirectories()) TraverseDirectory(di, level + " "); foreach (FileInfo fi in curDir.GetFiles()) Console.WriteLine(level + " " + "{0}", fi.Name); } Строковая переменная level помогает выводит имена файлов и каталогов с текстовыми отступами, соответствующими их уровням. Поскольку файловая система имеет правильную древовидную организацию, каждое рекурсивное «погружение» обязательно приведет на тот уровень вложенности, где уже нет подкаталогов. В этом случае цикл foreach, осуществляющий рекурсивные вызовы будет пустым. Таким образом, все процедура обхода не окажется бесконечной. Однако применять этот прием нужно с осторожностью, поскольку на интенсивно используемом компьютере образуется чрезвычайно многоуровневая система каталогов и выполнение такого рекурсивного алгоритма приведет к исчерпанию вычислительных ресурсов (обычно такая ситуация формулируется как Stack Overflow). Потому без необходимости не применяйте этот прием для всего логического диска: DriveInfo[] allDrives = DriveInfo.GetDrives(); DirectoryInfo rootDir = allDrives[1].RootDirectory; Лучше определить конкретный каталог для перебора: DirectoryInfo rootDir = new DirectoryInfo(@"D:\WORK\Крыша"); TraverseDirectory(rootDir, ""); Для получения информации о характеристиках каталогов в классе DirectoryInfo имеется несколько свойств. Свойства только для чтения: Exists наличие каталога. FullName полный путь к каталогу. Extension строка, содержащая расширение каталога. Name имя каталога Parent родительский каталог заданного подкаталога. Root корневой элемент пути. Свойства для чтения и записи: Attributes атрибуты каталога CreationTime время создания каталога LastAccessTime время последнего доступа к текущему каталогу. LastWriteTime время последней операции записи в текущий каталог. Как видите, размер каталога Вам не предоставляется. Его придется вичислять самостоятельно рекурсивно. Рассмотренные возможности предоставляли доступ к информации о каталогах «по чтению». Класс DirectoryInfo предоставляет и возможности «активной» работы с каталогами. Как правило, для того, чтобы выполнить какое-либо действие, связанное с каталогами, нужно сначала создать программный объект-каталог, указав его адрес: DirectoryInfo di1 = new DirectoryInfo(@"c:\MyDir"); Это возможно как для уже физически существующего каталога, так и для вновь создаваемого. Создание каталога. di1.Create();
|
||
|
Последнее изменение этой страницы: 2021-12-15; просмотров: 125; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.006 с.) |