Язык программирования C#9 и платформа .NET5
Часть 362 из 642 Информация о книге
На заметку! Если вы не работаете на машине с Windows, тогда модифицируйте код, чтобы читать файлы в каком-нибудь каталоге на вашей машине Не забудьте использовать
иPath.VolumeSeparatorChar, сделав код межплатформенным.Path.DirectorySeparatorCharМетод
возвращает массив объектовGetFiles(), каждый из которых открывает доступ к детальной информации о конкретном файле (типFileInfoбудет подробно описан далее в главе). Создайте в классеFileInfoследующий статический метод:Programstatic void DisplayImageFiles(){DirectoryInfo dir = newDirectoryInfo(@"C:\Windows\Web\Wallpaper");<b> // Получить все файлы с расширением *.jpg.</b>FileInfo[] imageFiles =dir.GetFiles("*.jpg", SearchOption.AllDirectories);<b> // Сколько файлов найдено?</b>Console.WriteLine("Found {0} *.jpg files\n", imageFiles.Length);// Вывести информацию о каждом файле.foreach (FileInfo f in imageFiles){Console.WriteLine("***************************");Console.WriteLine("File name: {0}", f.Name // Имя файлаConsole.WriteLine("File size: {0}", f.Length); // РазмерConsole.WriteLine("Creation: {0}", f.CreationTime); // Время созданияConsole.WriteLine("Attributes: {0}", f.Attributes); // АтрибутыConsole.WriteLine("***************************\n");}}Обратите внимание на указание в вызове
варианта поиска;GetFiles()обеспечивает просмотр всех подкаталогов корня. В результате запуска приложения выводится список файлов, которые соответствуют поисковому шаблону.SearchOption.AllDirectoriesСоздание подкаталогов с помощью типа DirectoryInfo
Посредством метода
можно программно расширять структуру каталогов. Он позволяет создавать одиночный подкаталог, а также множество вложенных подкаталогов в единственном вызове. В приведенном ниже методе демонстрируется расширение структуры каталога, в котором запускается приложение (обозначаемого с помощьюDirectoryInfo.CreateSubdirectory()), несколькими специальными подкаталогами:.static void ModifyAppDirectory(){DirectoryInfo dir = new DirectoryInfo(".");<b> // Создать \MyFolder в каталоге запуска приложения.</b>dir.CreateSubdirectory("MyFolder");<b> // Создать \MyFolder2\Data в каталоге запуска приложения.</b>dir.CreateSubdirectory($@"MyFolder2{Path.DirectorySeparatorChar}Data");}Получать возвращаемое значение метода
не обязательно, но важно знать, что в случае его успешного выполнения возвращается объектCreateSubdirectory(), представляющий вновь созданный элемент. Взгляните на следующую модификацию предыдущего метода:DirectoryInfostatic void ModifyAppDirectory(){DirectoryInfo dir = new DirectoryInfo(".");<b> // Создать \MyFolder в начальном каталоге.</b>dir.CreateSubdirectory("MyFolder");<b> // Получить возвращенный объект DirectoryInfo.</b>DirectoryInfo myDataFolder = dir.CreateSubdirectory($@"MyFolder2{Path.DirectorySeparatorChar}Data");<b> // Выводит путь к ..\MyFolder2\Data.</b>Console.WriteLine("New Folder is: {0}", myDataFolder);}Вызвав метод
в операторах верхнего уровня и запустив программу, в проводнике Windows можно будет увидеть новые подкаталоги.ModifyAppDirectory()Работа с типом Directory
Вы видели тип
в действии и теперь готовы к изучению типаDirectoryInfo. По большей части статические члены типаDirectoryвоспроизводят функциональность, которая предоставляется членами уровня экземпляра, определенными вDirectory. Тем не менее, вспомните, что члены типаDirectoryInfoобычно возвращают строковые данные, а не строго типизированные объектыDirectory.FileInfo/DirectoryInfoДавайте взглянем на функциональность типа Directory; показанный ниже вспомогательный метод отображает имена всех логических устройств на текущем компьютере (с помощью метода
) и применяет статический методDirectory.GetLogicalDrives()для удаления созданных ранее подкаталоговDirectory.Delete()и\MyFolder:\MyFolder2\Datastatic void FunWithDirectoryType(){<b> // Вывести список всех логических устройств на текущем компьютере.</b>string[] drives = Directory.GetLogicalDrives();