Какого имя каталога в котором находится этот файл
Пространства имен
В api-интерфейсах Windows используются две основные категории соглашений о пространстве имен, которые обычно называются пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано для самого низкого уровня пространства имен, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и, по расширению, пространства имен Win32. POSIX — это еще один пример подсистемы в Windows, построенной на основе пространства имен NT. Ранние версии Windows также определили несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как последовательные и параллельные порты, и консоль отображения по умолчанию в рамках того, что теперь называется пространством имен устройств NT, и по-прежнему поддерживаются в текущих версиях Windows для обратной совместимости.
Полные и относительные пути
Для функций API Windows, которые управляют файлами, имена файлов часто могут быть относительными к текущему каталогу, а некоторые API требуют полного пути. Имя файла относительно текущего каталога, если оно не начинается со следующего:
- UNC-имя любого формата, которое всегда начинается с двух символов обратной косой черты ("\\"). Дополнительные сведения см. в следующем разделе.
- Конструктор дисков с обратной косой чертой, например "C:\" или "d:\".
- Одна обратная косая черта, например "\directory" или "\file.txt". Это также называется абсолютным путем.
Если имя файла начинается только с конструктора дисков, но не обратной косой черты после двоеточия, он интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть корневым каталогом в зависимости от того, что он был установлен во время последней операции изменения каталога на этом диске. Ниже приведены примеры этого формата:
- "C:tmp.txt" ссылается на файл с именем "tmp.txt" в текущем каталоге на диске C.
- "C:tempdir\tmp.txt" относится к файлу в подкаталоге к текущему каталогу на диске C.
Путь также считается относительным, если он содержит "двойные точки"; то есть два периода вместе в одном компоненте пути. Этот специальный описатель используется для обозначения каталога над текущим каталогом, который иначе называется родительским каталогом. Ниже приведены примеры этого формата:
- ".. \tmp.txt" указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
- ".. \.. \tmp.txt" указывает файл, который является двумя каталогами над текущим каталогом.
- ".. \tempdir\tmp.txt" указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который является одноранговым каталогом текущего каталога.
Относительные пути могут объединять оба примера типов, например "C. \tmp.txt". Это полезно, так как система отслеживает текущий диск вместе с текущим каталогом этого диска, он также отслеживает текущие каталоги в каждой из разных букв дисков (если в вашей системе несколько), независимо от того, какой диктор диска установлен в качестве текущего диска.
Ограничение максимальной длины пути
В выпусках Windows до Windows 10 версии 1607 максимальная длина пути равна MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows изменение раздела реестра или использование средства групповая политика требуется для удаления ограничения. Полные сведения см. в разделе об ограничении максимальной длины пути .
Решение
в зависимости от того, какой объект уже имеется
с учетом того, что у вас, судя по всему, объекты DirectoryInfo, полученные с GetDirectories(), используйте 1 вариант, т.е. просто свойство Name
nadolechka, Здравствуйте!
Подскажите пожалуйста, почему в вашем примере список файлов выводится без расширения?
И как получить вывод списка файлов с их расширением?
Как получить все имена файлов из директории, в которй находиться файл с программой
Как получить все имена файлов из директории, в которй находиться файл с программой, не указывая до.
Как сохранить список файлов директории в "txt" файл построчно?
Как сохранить список файлов директории в "txt" файл построчно? На форме нет ни каких элементов.
Получить список изменившихся файлов
Помогите написать командник! С помощью него необходимо получить список изменившихся файлов. Есть.
Получить список файлов из интернета
Мне нужно получить список файлов в массив и потом проверить если textbox.text равен одному из.
Структура папок
Когда Вы открываете Проводник (Пуск—>Программы—>Стандартные—>Проводник), то видите там некое дерево, конечно, без зеленых листочков, потому что это компьютерное дерево. Дело в том, что если попробовать нарисовать общую структуру всех папок, находящихся на своем компьютере, то получится как раз дерево.
Такую структуру папок (каталогов) называют иерархической древообразной (или древовидной).
Обычно пользователи называют это просто дерево папок.
Корневая папка. Вложенные папки.
На каждом диске имеется главная, или корневая, папка (каталог), которая не имеет собственного имени и ее обозначают обратным слешем: \. Например, C:\ — корневая папка диска C, где «C:» — имя самого диска, а «\» — обозначение корневой папки.
Помимо корневой папки диска, папок 1-го, 2-го и т.д. уровней вложенности, есть еще понятие текущей папки. Текущая папка – это папка, с которой в настоящий момент работает пользователь.
Если Вам понадобился файл не из текущей папки, необходимо указать в какой папке (папках) находится этот файл, то есть указать путь к файлу. По аналогии с матрешками файл является самой маленькой матрешкой, вложенной в матрешки бОльшего размера (папки). Чтобы указать полное имя файла (т.е. имя самой маленькой матрёшки), следует поименно назвать все матрешки бОльшего размера (папки).
Пример задания:
Определите, какое из указанных имен файлов удовлетворяет маске: ?hel*lo.c?*
1) hello.c 2) hello.cpp 3) hhelolo.cpp 4) hhelolo.c
1) будем проверять соответствие файлов маске по частям, записывая результаты в таблицу
2) начнем с первой части маски, « ?hel »; эта часть означает, что перед сочетанием « hel » в начале имени стоит один любой символ;
3) сразу видим, что первые два имени не подходят (начинаются прямо с « hel », без стартового символа), отмечаем их крестиком в таблице и больше не рассматриваем:
h hel olo.cpp
h hel olo.c
желтым и фиолетовым маркером в таблице выделены соответствующие части маски и имен файлов (где есть совпадение)
4) для двух последних имен проверяем второй блок маски: после « hel » должна быть цепочка « lo . c », или вплотную (и это возможно!) или через произвольную «вставку», на которую указывает звездочка в маске; видим, что оба имени прошли проверку:
hhel o lo.c pp
5) последняя часть маски, « ?* », означает, что после « lo . c » должен стоять по крайне мере один любой символ (на это указывает знак «?»); проверяя это правило, обнаруживаем, что для последнего имени, « hhelolo . c », маска не подходит, поскольку после « lo . c » ни одного символа нет:
? hel * lo . c
hello . cp
hello . cpp
hhelolo . cpp
hhelolo . cpp
hhelolo . cpp
h hel o lo.c p p
hhelolo . c
hhelolo . c
6) таким образом, правильный ответ – 3.
Возможные ловушки и проблемы :
· можно забыть, что звездочка «*» может соответствовать и пустой последовательности; например, в рассмотренной задаче имя « hhelolo . cp » также соответствует маске
· можно забыть, что знак «?» НЕ может соответствовать пустой последовательности, а заменяет ровно 1 символ
Пространства имен NT
Существуют также API, которые позволяют использовать соглашение о пространстве имен NT, но диспетчер объектов Windows делает это ненужным в большинстве случаев. Чтобы проиллюстрировать, полезно просмотреть пространства имен Windows в браузере системных объектов с помощью средства winObj Windows Sysinternals. При запуске этого средства отображается пространство имен NT, начинающееся с корневого каталога, или "\". Вложенная папка с именем "Global??" — это место расположения пространства имен Win32. Именованные объекты устройства находятся в пространстве имен NT в подкаталоге Device. Здесь также можно найти Serial0 и Serial1, объекты устройства, представляющие первые два COM-порта, если они присутствуют в системе. Объект устройства, представляющий том, будет примерно таким, как HarddiskVolume1, хотя числовой суффикс может отличаться. Имя DR0 в подкаталоге "Harddisk0" является примером объекта устройства, представляющего диск и т. д.
Чтобы сделать эти объекты устройств доступными Windows приложениями, драйверы устройств создают символьную ссылку (символьную ссылку) в пространстве имен Win32 "Global??", к соответствующим объектам устройства. Например, COM0 и COM1 в подкаталоге "Global??" — это просто символьные ссылки на Serial0 и Serial1, "C:" — это символьная ссылка на HarddiskVolume1, "Physicaldrive0" — это символьная ссылка на DR0 и т. д. Без символьного канала указанное устройство Xxx не будет доступно ни одному приложению Windows с помощью соглашений о пространстве имен Win32, как описано выше. Однако дескриптор можно открыть на этом устройстве с помощью любых API, поддерживающих абсолютный путь к пространству имен NT формата \Device\Xxx.
Благодаря добавлению поддержки нескольких пользователей через службы терминалов и виртуальные машины стало еще больше необходимо виртуализировать корневое устройство на уровне системы в пространстве имен Win32. Для этого добавьте символьную ссылку с именем GLOBALROOT в пространство имен Win32, которое можно увидеть в подкаталоге "Global??" средства браузера WinObj, описанного ранее, и сможете получить доступ через путь "\\?\GLOBALROOT". Этот префикс гарантирует, что следующий путь выглядит в истинном корневом пути диспетчера системных объектов, а не в зависимом от сеанса пути.
Тема: Файловая система.
Что нужно знать:
· данные на дисках хранятся в виде файлов (наборов данных, имеющих имя)
· чтобы было удобнее разбираться с множеством файлов, их объединяют в каталоги (в Windows каталоги называются «папками»)
· каталог можно воспринимать как контейнер, в котором размещаются файлы и другие каталоги, которые называются подкаталогами или вложенными каталогами (они находятся внутри другого каталога, вложены в него)
· каталоги организованы в многоуровневую (иерархическую) структуру, которая называется «деревом каталогов»
· главный каталог диска (который пользователь видит, «открыв» диск, например, в Проводнике Windows или аналогичной программе) называется корневым каталогом или «корнем» диска, он обозначается буквой логического диска, за которой следует двоеточие и знак «\» (обратный слэш [1] ); например, A :\ – это обозначение корневого каталога диска А
· каждый каталог (кроме корневого) имеет (один единственный!) «родительский» каталог – этот тот каталог, внутри которого находится данный каталог
· полный адрес каталога – это перечисление каталогов, в которые нужно войти, чтобы попасть в этот каталог (начиная с корневого каталога диска); например
С:\ USER \ BIN \ SCHOOL
· полный адрес файла состоит из адреса каталога, в котором он находится, символа «\» и имени файла, например
С:\ USER \ BIN \ SCHOOL \Вася. txt
· маска служит для обозначения (выделения) группы файлов, имена которых имеют общие свойства, например, общее расширение
· в масках, кроме «обычных» символов (допустимых в именах файлов) используются два специальных символа: звездочка «*» и знак вопроса «?»;
· звездочка «*» обозначает любой количество любых символов, в том числе, может обозначать пустую последовательность;
· знак вопроса «?» обозначает ровно один любой символ
· при выводе списка имен файлов они могут быть отсортированы по имени, типу (расширению), дате последнего изменения, размеру; это не меняет их размещения на диске;
· если установлена сортировка по имени или типу, сравнение идет по кодам символов, входящих в имя или в расширение
Как назвать папку?
Все папки имеют имена. Требования к именам папок те же, что и к именам файлов. Единственное отличие состоит в том, что в имени папки расширение, как правило, не применяется, хотя при необходимости его можно использовать. В каждой папке могут храниться как файлы, так и другие папки, те, в свою очередь, тоже могут содержать файлы и папки и т.д.
Папки чем-то напоминают матрёшки. Про такие папки, находящиеся внутри других папок, говорят, что это вложенные папки. Папка, включающая в себя другие папки, называется родительской или охватывающей.
Если возле названия папки стоит «+», то это значит, что в этой папке есть еще папки и их можно открыть. Для этого надо щёлкнуть по «+» и он поменяется на «-», при этом под названием папки откроется список из папок, содержащихся в открываемой папке.
Если же щелкнуть по «-», то он превратится в «+», а список содержимого папки закроется.
Короткие и длинные имена
Длинное имя файла считается любым именем файла, превышающим короткое соглашение об именовании стилей MS-DOS (также называемое 8.3). При создании длинного имени файла Windows также может создать короткую форму имени 8.3, которая называется псевдонимом 8.3 или коротким именем, а также хранить его на диске. Этот псевдоним версии 8.3 можно отключить по соображениям производительности по всей системе или для указанного тома в зависимости от конкретной файловой системы.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: псевдоним 8.3 нельзя отключить для указанных томов до Windows 7 и Windows Server 2008 R2.
Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое слишком долго соответствует правилам именования 8.3.
Не все файловые системы соответствуют соглашению о замене тильды, и системы можно настроить для отключения создания псевдонима 8.3, даже если они обычно поддерживают его. Поэтому не следует предполагать, что псевдоним 8.3 уже существует на диске.
Чтобы запросить имена файлов 8.3, длинные имена файлов или полный путь к файлу из системы, рассмотрите следующие параметры:
- Чтобы получить форму 8.3 длинного имени файла, используйте функцию GetShortPathName .
- Чтобы получить длинную версию имени файла короткого имени, используйте функцию GetLongPathName .
- Чтобы получить полный путь к файлу, используйте функцию GetFullPathName .
В более новых файловых системах, таких как NTFS, exFAT, UDFS и FAT32, Windows сохраняет длинные имена файлов на диске в Юникоде, что означает, что исходное длинное имя файла всегда сохраняется. Это верно, даже если длинное имя файла содержит расширенные символы, независимо от кодовой страницы, активной во время операции чтения или записи диска.
Файлы с длинными именами файлов можно копировать между секциями файловой системы NTFS и Windows секциями файловой системы FAT, не теряя никаких сведений об имени файла. Это может быть не так для старых файловых систем MS-DOS FAT и некоторых типов CDFS (CD-ROM) в зависимости от фактического имени файла. В этом случае короткое имя файла будет заменено, если это возможно.
Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратная косая черта), при этом каждый компонент обычно является именем каталога или именем файла, но с некоторыми заметными исключениями, рассмотренными ниже. Зачастую крайне важно интерпретировать системой путь, как выглядит начало или префикс пути. Этот префикс определяет пространство имен , используемое путем, а также специальные символы, используемые в какой позиции в пути, включая последний символ.
Если компонент пути является именем файла, он должен быть последним компонентом.
Каждый компонент пути также будет ограничен максимальной длиной, указанной для конкретной файловой системы. Как правило, эти правила делятся на две категории: короткие и длинные. Обратите внимание, что имена каталогов хранятся файловой системой как особый тип файла, но правила именования файлов также применяются к именам каталогов. Чтобы подвести итог, путь — это просто строковое представление иерархии между всеми каталогами, которые существуют для определенного файла или имени каталога.
Пространства имен файлов Win32
Префикс пространства имен Win32 и соглашения приведены в этом разделе и в следующем разделе с описанием их использования. Обратите внимание, что эти примеры предназначены для использования с функциями API Windows и не все обязательно работают с приложениями оболочки Windows, такими как Windows Explorer. По этой причине существует более широкий спектр возможных путей, чем обычно доступны в приложениях оболочки Windows, и Windows приложения, которые используют преимущества этого, можно разработать с помощью этих соглашений о пространстве имен.
Так как он отключает автоматическое расширение строки пути, префикс "\\?\" также позволяет использовать ".." и "." в именах путей, которые могут быть полезны при попытке выполнить операции с файлом с этими зарезервированными относительными описателями пути в рамках полного пути.
Многие, но не все API-интерфейсы ввода-вывода файлов поддерживают "\\?\"; Необходимо ознакомиться со справочной темой для каждого API, чтобы убедиться.
Обратите внимание, что API Юникода должны использоваться для проверки того, что префикс "\?\" позволяет превысить MAX_PATH
Еще пример задания:
Каталог содержит файлы с именами
б) q q .cpp
в) q q .c
д) q aa .c md
е) q12. cpp
Определите, в каком порядке будут показаны файлы, если выбрана сортировка по типу (по возрастанию).
1) авгдбе 2) авгдеб 3) абвгде 4) авдбег
1) при сортировке по типу сравниваются расширения имен файлов
2) при сравнении используют коды символов
3) отсутствие символа (когда расширение закончилось) считается «меньше» любого символа, то есть, файл с расширением .с будет находиться в списке выше, чем файлы с расширениями . c 1 и . cmd
4) коды цифр размещаются в таблице символов раньше, чем коды букв, то есть, файл с расширением .с1 будет находиться в списке выше, чем файл с расширением .сmd
5) теперь можно распределить имена файлов по расширениям
в) q q .c
д) q aa .c md
б) q q .cpp
е) q12. cpp
6) осталась еще одна проблема – решить, что делать, если расширения совпадают; в этом случае в большинстве программ для определенности используется дополнительная сортировка по имени, поэтому файл с именем q12.cpp будет стоять в списке выше, чем файл q q .cpp (код цифры ‘1' меньше, чем код буквы ‘ q ’)
7) в итоге получаем
в) q q .c
д) q aa .c md
е) q12. cpp
б) q q .cpp
8) таким образом, мы доказали, что правильный ответ – 2.
Возможные ловушки и проблемы :
· можно забыть правильно расставить имена файлов с одинаковыми расширениями (неверный ответ 1)
· нельзя сравнивать числовые значения: например, интуитивно кажется, что файл с расширением .c10 «больше», чем файл с расширением .c2 , однако это неверно, потому что код цифры '2' больше, чем код цифры '1’; поэтому файл с расширением .c10 будет стоять в списке выше файла с расширением .c2 (при сортировке по типу в порядке возрастания)
· можно забыть, что отсутствие кода (имя или расширение закончилось) «меньше» любого кода
· можно забыть, что коды цифр меньше, чем коды букв
· очень легко по невнимательности выбрать не тот ответ
Решение
А какой функцией можно получить список подкаталогов, в каталоге без путей? В классах Path и Directory чет не нашел такой
valera_21, допустим в каталоге C:\test есть два подкаталога test1 и test2. Если использовать функцию GetDirectories(), то вывод будет C:\test\test1 и C:\test\test2 (имена каталогов с путями до них), а мне нужен вывод test1 и test2.
Заполняем пробелы — расширяем горизонты!
Для того чтобы иметь относительный порядок на своем компьютере, необходимо свои файлы хранить в соответствующих папках. Это значительно упрощает как поиск отдельных файлов, так и работу с группой файлов: перемещение, копирование, удаление и т.п. Такой принцип организации используется в библиотеках, архивах и канцеляриях.
Документы, систематизированные по общему признаку, хранятся в одной папке (или каталоге). Папки подписываются. Получается, что документы не свалены в одну кучу, а разложены по папкам и в итоге можно легко найти необходимый документ.
По аналогии с этим компьютерные файлы объединяют в группы, для которых на компьютере создают папки. Таким образом, назначение папки состоит в объединении файлов и других папок в группы по любому параметру.
На сегодняшний день три понятия:
с точки зрения компьютерной грамотности, означают одно и то же, давайте уточним, что именно.
Папка или директория – это специальное место на компьютерном носителе информации, в котором хранятся имена файлов и сведения об этих файлах (размер файлов, время их последнего обновления, свойства файлов и т.п.)
Понятия «каталог», «директория» появились в компьютерном мире одновременно с понятиями «файл», «файловая система» для упрощения организации файлов. Понятие «папка» в мире компьютеров появилось значительно позднее, точнее, вместе с появлением Windows 95.
Можно придумать собственную систему для хранения файлов и папок на своем компьютере. Например, создать папки, где файлы сгруппированы:
по теме – папки «Обучающие программы», «Счета», «Рыбалка» и т.п., по имени автора материалов – папки «Мамонтов», «Воробьёва» и т.п.. по времени создания – папка «01.01-30.06.2010» с файлами, созданными с 1 января по 30 июня 2010г., папка «3 квартал 2010» и т.п.
Соглашения об именах
Следующие фундаментальные правила позволяют приложениям создавать и обрабатывать допустимые имена файлов и каталогов независимо от файловой системы:
Используйте точку, чтобы отделить имя базового файла от расширения в имени каталога или файла.
Используйте обратную косую черту (\) для разделения компонентовпути. Обратная косая черта делит имя файла на путь к нему и одно имя каталога из другого имени каталога в пути. Обратную косую черту нельзя использовать в имени фактического файла или каталога, так как это зарезервированный символ, разделяющий имена на компоненты.
Используйте обратную косую черту в качестве части имен томов, например "C:\". в папке "C:\path\file" или "\\server\share" в "\server\share\path\file" для имен UNC. Дополнительные сведения об именах UNC см. в разделе ограничения максимальной длины пути .
Не предполагайте конфиденциальность регистра. Например, рассмотрим имена ОСКАРа, Оскара и оскара, хотя некоторые файловые системы (например, файловая система, совместимая с POSIX), могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию. Дополнительные сведения см. в разделе CreateFile.
Конструкторы томов (буквы диска) точно так же не учитывают регистр. Например, "D:\" и "d:\" ссылаться на тот же том.
Используйте любой символ в текущей кодовой странице для имени, включая символы и символы Юникода в расширенном наборе символов (128–255), за исключением следующих:
Следующие зарезервированные символы:
- < (меньше чем);
- > (больше чем);
- : (двоеточие)
- " (двойная кавычка)
- / (косая черта)
- \ (обратная косая черта)
- | (вертикальная полоса или канал)
- ? (вопросительный знак)
- * (звездочка)
Целочисленное значение ноль, иногда называемое символом NUL ASCII.
Символы, целочисленные представления которых находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, в которых разрешены эти символы. Дополнительные сведения о потоках файлов см. в разделе "Файл Потоки".
Любой другой символ, который не допускает целевая файловая система.
Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например ".\temp.txt". Дополнительные сведения см. в разделе "Пути".
Используйте два последовательных периода (.).) в качестве компонента каталога в пути для представления родительского элемента текущего каталога, например ".. \temp.txt". Дополнительные сведения см. в разделе "Пути".
Не используйте следующие зарезервированные имена для имени файла:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Кроме того, избегайте этих имен, за которым следует немедленное расширение; Например, NUL.txt не рекомендуется. Дополнительные сведения см. в разделе Пространства имен.
Не заканчивайте имя файла или каталога пробелом или точкой. Хотя базовая файловая система может поддерживать такие имена, оболочка Windows и пользовательский интерфейс не поддерживаются. Однако можно указать точку в качестве первого символа имени. Например, ".temp".
Еще пример задания:
Перемещаясь из одного каталога в другой, пользователь последовательно посетил каталоги DOC , USER , SCHOOL , A:\ , LETTER , INBOX . При каждом перемещении пользователь либо спускался в каталог на уровень ниже, либо поднимался на уровень выше. Каково полное имя каталога, из которого начал перемещение пользователь?
2) A:\LETTER\INBOX
3) А :\SCHOOL\USER\DOC
4) А :\DOC\USER\SCHOOL
1) сразу отметим, что здесь предполагается, что пользователь не переходил на другой диск;
2) в задачах, где нужно определить полный адрес файла или каталога, нужно начинать с поиска имени диска, в данном случае каталог находится на диске A:\ (так обозначается корневой каталог)
3) поскольку в списке посещенных каталогов перед A:\ стоит SCHOOL , пользователь мог попасть в корень диска A:\ только через каталог SCHOOL , поэтому адрес стартового каталога начинается с A :\ SCHOOL
4) так как среди предложенных вариантов только один удовлетворяет этому условию, можно остановиться (правильный ответ – 3), однако, давайте все же доведем процедуру до конца, это позволит выяснить некоторые интересные моменты, которые не сработали здесь, но могут сработать в других задачах
5) как пользователь попал в каталог SCHOOL ? по условию он мог как подниматься, так и спускаться по дереву каталогов
6) явно он не мог спуститься из USER в SCHOOL , потому что SCHOOL находится в корневом каталоге и каждый каталог имеет только одного «родителя»; значит, пользователь поднялся из USER в SCHOOL , и начальная часть полного адреса А:\ SCHOOL \ USER
7) аналогично можно доказать, что пользователь поднялся в каталог USER из каталога DOC
8) таким образом, мы доказали, что правильный ответ – 3.
Возможные ловушки и проблемы :
· можно забыть, что названия каталогов в полном имени перечисляются в порядке входа в них, начиная от корневого; пользователь выходил из каталогов, поднимаясь к корню диска A:\ , поэтому проходил каталоги в обратном порядке (на эту ошибку рассчитан неверный ответ А:\ DOC \ USER \ SCHOOL )
· можно перепутать каталог, из которого вышел пользователь, и каталог, где он в конечном счете оказался (на эту ошибку рассчитан неверный ответ А:\ LETTER \ INBOX )
· в условии есть лишние данные, которые только запутывают дело; например, имена каталогов LETTER , INBOX никак не влияют на ответ, потому что пользователь попал в них уже после выхода в корневой каталог диска A:\ , то есть, пройдя весь путь исходного каталога в обратном порядке
Что такое полное имя файла
Полное имя файла начинается с указания имени дисковода, затем идет последовательность из имен папок и, наконец, имя файла.
Имя дисковода, имена папок и имя файла в полном имени разделяются символами « \ ».
Например, запись полного имени файла может выглядеть так: D:\Финансы\Счета\Счет-1.doc. Это означает, что файл с именем Счет-1.doc находится в папке Счета, которая в свою очередь находится в папке Финансы на диске D:.
Полный путь к файлу (или путь к файлу) – это часть полного имени, не включающая само имя файла. Путь к файлу Счет-1.doc выглядит так: D:\Финансы\Счета\.
Упражнение по компьютерной грамотности:
Напишите, как выглядит полное имя какого-нибудь файла, находящегося на вашем компьютере в папке «Мои документы»?
Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Windows разработчики, работающие с API-интерфейсами Windows для операций ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.
Доступ к данным можно получить с дисков, устройств и сетевых ресурсов с помощью API-интерфейсов ввода-вывода файлов. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление места для получения данных независимо от того, находится ли он с диска или устройства или сетевого подключения для определенной операции.
Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также соответствуют соглашениям об именовании файлов и правилам так же, как обычный файл или каталог. Дополнительные сведения см. в разделе "Жесткие ссылки" и "Соединения" , " Точки повторного анализа" и "Операции с файлами".
Дополнительные сведения см. в следующих подразделах:
Дополнительные сведения о настройке Windows 10 для поддержки длинных путей к файлам см. в разделе "Ограничение максимальной длины пути".
Еще пример задания:
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.
В каталоге находятся пять файлов:
Определите, по какой из масок будет выбрана указанная группа файлов:
1) авторы привели список файлов в каталоге, что наводит на мысль о каком-то подвохе, и он действительно есть
2) сформулируем правила, соответствующие каждой маске:
1. в имени файла есть буква «о», за которой следует еще хотя бы один символ; расширение начинается с буквы « d », за которой следует не менее 1 символа
2. в имени файла есть буква «о», перед ней стоит один символ, а за ней следует еще хотя бы один символ; расширение начинается с буквы « d »
3. в имени файла есть «or», расширение из 4-х символов, начинается с « doc »
4. в имени файла 4 символа, причем в середине – «or»; расширение из 4-х символов, начинается с « doc »
3) анализируя маску 1, с удивлением обнаруживаем, что под нее подходят ВСЕ исходные файлы, находящиеся в каталоге, поэтому этот ответ неверный
4) маске 2 соответствуют только нужные нам 4 файла, файл orsk.dat отсекается, потому что в маске перед «о» должен быть еще один символ; скорее всего, это и есть правильный ответ
5) маски 3 и 4 не соответствуют последним двум файлам, у которых расширение doc состоит из трех символов, поэтому это неверные варианты
6) таким образом, мы доказали, что правильный ответ – 2 .
[1] Для разделения имен каталогов в адресе в разных операционных системах применяют прямой слэш «/» или обратный слэш «\». В системе Windows , которая наиболее распространена в России, стандартным разделителем считается «\», именно такой знак чаще всего используется в задачах ЕГЭ.
Файловая система . На каждом носителе информации (гибком, жестком или лазерном диске) может храниться большое количество файлов. Порядок хранения файлов на диске определяется используемой файловой системой.
Каждый диск разбивается на две области: обла сть хранения файлов и каталог. Каталог содержит имя файла и указание на начало его размещения на диске. Если провести аналогию диска с книгой, то область хранения файлов соответствует ее содержанию, а каталог - оглавлению. Причем книга состоит из страниц, а диск - из секторов.
Для дисков с небольшим количеством файлов (до нескольких десятков) может использоваться одноуровневая файловая система , когда каталог (оглавление диска) представляет собой линейную последовательность имен файлов (табл. 1.2). Такой каталог можно сравнить с оглавлением детской книжки, которое содержит только названия отдельных рассказов.
Если на диске хранятся сотни и тысячи файлов, то для удобства поиска используется многоуровневая иерархическая файловая система , которая имеет древовидную структуру. Такую иерархическую систему можно сравнить, например, с оглавлением данного учебника, которое представляет собой иерархическую систему разделов, глав, параграфов и пунктов.
Начальный, корневой каталог содержит вложенные каталоги 1-го уровня, в свою очередь, каждый из последних может содержать вложенные каталоги 2-го уровня и так далее. Необходимо отметить, что в каталогах всех уровней могут храниться и файлы.
Например, в корневом каталоге могут находиться два вложенных каталога 1-го уровня (Каталог_1, Каталог_2) и один файл (Файл_1). В свою очередь, в каталоге 1-го уровня (Каталог_1) находятся два вложенных каталога второго уровня (Каталог_1.1 и Каталог_1.2) и один файл (Файл_1.1) - рис. 1.3.
Файловая система - это система хранения файлов и организации каталогов.
Рассмотрим иерархическую файловую систему на конкретном примере. Каждый диск имеет логическое имя (А:, В: - гибкие диски, С:, D:, Е: и так далее - жесткие и лазерные диски).
Пусть в корневом каталоге диска С: имеются два каталога 1-го уровня (GAMES, TEXT), а в каталоге GAMES один каталог 2-го уровня (CHESS). При этом в каталоге TEXT имеется файл proba.txt, а в каталоге CHESS - файл chess.exe (рис. 1.4).
Рис. 1.4. Пример иерархической файловой системы |
Путь к файлу . Как найти имеющиеся файлы (chess.exe, proba.txt) в данной иерархической файловой системе? Для этого необходимо указать путь к файлу. В путь к файлу входят записываемые через разделитель "\" логическое имя диска и последовательность имен вложенных друг в друга каталогов, в последнем из которых содержится нужный файл. Пути к вышеперечисленным файлам можно записать следующим образом:
Путь к файлу вместе с именем файла называют иногда полным именем файла.
Пример полного имени файла:
Представление файловой системы с помощью графического интерфейса . Иерархическая файловая система MS-DOS, содержащая каталоги и файлы, представлена в операционной системе Windows с помощью графического интерфейса в форме иерархической системы папок и документов. Папка в Windows является аналогом каталога MS-DOS
Однако иерархическая структура этих систем несколько различается. В иерархической файловой системе MS-DOS вершиной иерархии объектов является корневой каталог диска, который можно сравнить со стволом дерева, на котором растут ветки (подкаталоги), а на ветках располагаются листья (файлы).
В Windows на вершине иерархии папок находится папка Рабочий стол. Следующий уровень представлен папками Мой компьютер, Корзина и Сетевое окружение (если компьютер подключен к локальной сети) - рис. 1.5.
Рис. 1.5. Иерархическая структура папок |
Если мы хотим ознакомиться с ресурсами компьютера, необходимо открыть папку Мой компьютер.
1. В окне Мой компьютер находятся значки имеющихся в компьютере дисков. Активизация (щелчок) значка любого диска выводит в левой части окна информацию о его емкости, занятой и свободной частях.
она возвращает имена файлов вместе с путями, есть ли какая то функция, которая возвращает просто имена файлов без путей к ним?
Список файлов в директории
using System; using System.Collections.Generic; using System.Linq; using System.Text; using.
Список всех файлов и папок в директории с подпапками
Привет :) Допустим есть директория по пути: "C:\MyDir" В этой директории есть папки и файлы, в.
Получить список всех папок и подпапок в директории
Нужно получить список всех папок, подпапок и файлов в них - из указанной директории.
Как вывести список всех файлов определенного расширения из директории?
Здравствуйте! По адресу "C:\images\" есть разные картинки с разними форматами. Задача программы в.
Имена файлов и каталогов
Все файловые системы соответствуют одинаковым общим соглашениям об именовании для отдельного файла: базовому имени файла и необязательному расширению, разделенному точкой. Однако каждая файловая система, например NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь определенные и различные правила формирования отдельных компонентов в пути к каталогу или файлу. Обратите внимание, что каталог — это просто файл с особым атрибутом, назначающим его в качестве каталога, но в противном случае должен соответствовать всем тем же правилам именования, что и обычный файл. Так как каталог терминов просто относится к специальному типу файла, насколько это касается файловой системы, некоторые справочные материалы будут использовать общий файл терминов для охвата как концепций каталогов, так и файлов данных. Из-за этого, если не указано иное, любые правила именования или использования или примеры для файла также должны применяться к каталогу. Путь к термину относится к одному или нескольким каталогам, обратным косикам и, возможно, имени тома. Дополнительные сведения см. в разделе "Пути ".
Ограничения количества символов могут отличаться и могут отличаться в зависимости от используемого формата префикса имени файловой системы и пути. Это еще больше усложняется поддержкой механизмов обратной совместимости. Например, более старая файловая система MS-DOS FAT поддерживает не более 8 символов для имени базового файла и 3 символа для расширения в общей сложности 12 символов, включая разделитель точек. Это обычно называется именем файла 8.3. Windows файловых систем FAT и NTFS не ограничиваются именами файлов 8.3, так как они поддерживают длинные имена файлов, но по-прежнему поддерживают версию 8.3 длинных имен файлов.
Пространства имен устройств Win32
Префикс "\\.\" будет обращаться к пространству имен устройства Win32 вместо пространства имен файлов Win32. Таким образом, доступ к физическим дискам и томам осуществляется напрямую без прохождения файловой системы, если API поддерживает этот тип доступа. Таким образом можно получить доступ к нескольким устройствам, кроме дисков (например, с помощью функций CreateFile и DefineDosDevice ).
Например, если вы хотите открыть последовательный порт связи системы 1, можно использовать com1 в вызове функции CreateFile . Это работает потому, что COM1–COM9 является частью зарезервированных имен в пространстве имен NT, хотя при использовании префикса "\\.\" также будут работать с этими именами устройств. Для сравнения, если установлена 100-последовательная плата расширения портов и вы хотите открыть COM56, ее нельзя открыть с помощью COM56, так как для COM56 нет предопределенного пространства имен NT. Его необходимо открыть с помощью "\\.\COM56", так как "\\\.\" переходит непосредственно в пространство имен устройства, не пытаясь найти предопределенный псевдоним.
Еще одним примером использования пространства имен устройства Win32 является использование функции CreateFile с "\\.\PhysicalDriveX" (где X является допустимым целым числом) или "\\.\CdRomX". Это позволяет обращаться к этим устройствам напрямую, обходя файловую систему. Это работает потому, что эти имена устройств создаются системой по мере перечисления этих устройств, а некоторые драйверы также создают другие псевдонимы в системе. Например, драйвер устройства, реализующий имя C:\. имеет собственное пространство имен, которое также может быть файловой системой.
ИНТЕРФЕЙСы API, которые проходят через функцию CreateFile , обычно работают с префиксом "\\.\", так как CreateFile — это функция, используемая для открытия файлов и устройств в зависимости от используемых параметров.
При работе с функциями API Windows следует использовать префикс "\\.\" для доступа только к устройствам, а не к файлам.
Большинство API не поддерживают "\\.\"; Распознаются только те, которые предназначены для работы с пространством имен устройства. Всегда проверяйте справочный раздел для каждого API, чтобы убедиться.
Еще пример задания:
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, по какой из масок будет выбрана указанная группа файлов:
1) рассмотрим первую маску *23*.? x * : она требует, чтобы в имени файла были стоящие подряд цифры 23 (это есть у всех заданных файлов) и в расширении слева от буквы « x » был один обязательный символ (ни одно имя файла не подходит); поэтому вариант 1 неверный
2) рассмотрим вторую маску ?23?. x ?? : она требует, чтобы в имени файла слева и справа от цифр 23 стояло по одному символу (подходит только для первого имени файла, для остальных не подходит); поэтому вариант 2 неверный
3) рассмотрим третью маску ?23?. x * : она не подходит по тем же причинам, что и вариант 2
4) рассмотрим последнюю маску *23*. : она требует, чтобы в имени файла были стоящие подряд цифры 23 (это есть у всех заданных файлов) и в расширении было ровно три обязательных символа (это тоже верно для всех имен файлов); поэтому вариант 4 верный
5) таким образом, мы доказали, что правильный ответ – 4 .
Читайте также: