Путь к файлу не включает
Члены большинства типов в пространстве имен System.IO имеют параметр path , который позволяет указать абсолютный или относительный путь к ресурсу в файловой системе. Этот путь передается в API файловой системы Windows. В этом разделе рассматриваются форматы путей к файлам, которые можно использовать в операционных системах Windows.
Традиционные пути DOS
Стандартный путь DOS может состоять из трех компонентов:
- Буква тома или диска, после которой следует разделитель томов ( : ).
- Имя каталога. Символ разделителя каталогов служит для разделения подкаталогов во внутренней иерархии каталога.
- Необязательное имя файла. Символ разделителя каталогов служит для разделения пути к файлу и его имени.
Если присутствуют все три компонента, путь является абсолютным. Если буква тома или диска не указана и имя каталога начинается с символа разделителя каталогов, такой путь задан относительно корня текущего диска. В противном случае путь задан относительно текущего каталога. В следующей таблице показаны некоторые возможные пути к каталогам и файлам.
Путь | Описание: |
---|---|
C:\Documents\Newsletters\Summer2018.pdf | Абсолютный путь к файлу из корня диска C: . |
\Program Files\Custom Utilities\StringFinder.exe | Абсолютный путь из корня текущего диска. |
2018\January.xlsx | Относительный путь к файлу в подкаталоге текущего каталога. |
..\Publications\TravelBrochure.pdf | Относительный путь к файлу в каталоге, который является одноранговым для текущего каталога. |
C:\Projects\apilibrary\apilibrary.sln | Абсолютный путь к файлу из корня диска C: . |
C:Projects\apilibrary\apilibrary.sln | Относительный путь из текущего каталога диска C: . |
Обратите внимание на различия между двумя последними путями. В обоих случаях задается необязательный описатель тома ( C: ), однако первый путь, в отличие от второго, начинается с корня указанного тома. В результате первый путь является абсолютным из корневого каталога диска C: , тогда как второй — относительным из текущего каталога C: . Использование второй формы пути в тех случаях, когда предполагается наличие первой, является распространенным источником ошибок, связанных с путями к файлам в Windows.
Чтобы определить, является ли путь к файлу полным (такой путь не зависит от текущего каталога и не изменяется при смене текущего каталога), можно вызвать метод Path.IsPathFullyQualified. Обратите внимание, что такой путь может включать сегменты с относительным путем к каталогу ( . и .. ), но при этом по-прежнему будет полным, если разрешенный путь всегда указывает на одно и то же место.
В приведенном ниже примере показано различие между абсолютными и относительными путями. Предполагается, что каталог D:\FY2018\ существует и вы не установили какой-либо текущий каталог для диска D:\ из командной строки перед запуском этого примера.
Если вы хотите увидеть комментарии к коду, переведенные на языки, отличные от английского, сообщите нам на странице обсуждения этой проблемы на сайте GitHub.
UNC-пути
UNC-пути (универсальное соглашение об именовании) используются для доступа к сетевым ресурсам и имеют следующий формат:
- Имя сервера или узла, которому предшествуют символы \\ . В качестве имени сервера может выступать имя компьютера NetBIOS, а также IP-адрес или полное доменное имя (поддерживаются адреса IPv4 и IPv6).
- Имя общего ресурса, которое отделяется от имени узла символами \ . Имя сервера и имя общего ресурса в совокупности образуют том.
- Имя каталога. Символ разделителя каталогов служит для разделения подкаталогов во внутренней иерархии каталога.
- Необязательное имя файла. Символ разделителя каталогов служит для разделения пути к файлу и его имени.
Ниже приводятся некоторые примеры UNC-путей:
Path | Описание |
---|---|
\\system07\C$\ | Корневой каталог диска C: на компьютере system07 . |
\\Server2\Share\Test\Foo.txt | Файл Foo.txt в тестовом каталоге тома \\Server2\Share . |
UNC-пути всегда должны быть полными. Они могут включать сегменты с относительным путем к каталогу ( . и .. ), однако они должны быть частью полного пути. Использовать относительные пути можно только посредством сопоставления UNC-пути с буквой диска.
Пути к устройствам DOS
В операционной системе Windows используется унифицированная объектная модель, которая указывает на все ресурсы, включая файлы. Эти пути к объектам доступны из окна консоли и предоставляются на уровень Win32 с использованием специальной папки с символьными ссылками, с которыми сопоставляются устаревшие пути DOS и UNC. Доступ к этой специальной папке осуществляется с использованием синтаксиса пути к устройству DOS, который может иметь одну из приведенных ниже форм:
Помимо использования буквы диска, вы можете указать том с помощью его GUID. Синтаксис будет иметь вид:
Путь к устройству DOS состоит из следующих компонентов:
Описатель пути к устройству ( \\.\ или \\?\ ), который идентифицирует путь как путь к устройству DOS.
Символьная ссылка на "реальный" объект устройства (C: в случае имени диска или Volume в случае GUID тома).
Первый сегмент пути к устройству DOS после описателя пути к устройству идентифицирует том или диск. (Например, \\?\C:\ и \\.\BootPartition\ .)
Для UNC-путей существует специальная ссылка, которая называется UNC . Пример:
Для UNC-путей к устройствам часть сервера или общего сетевого ресурса образует том. Например, в пути \\?\server1\e:\utilities\\filecomparer\ часть server1\utilities представляет сервер или общий сетевой ресурс. Это важно при вызове такого метода, как Path.GetFullPath(String, String) с сегментами с относительным путем к каталогу, поскольку переход дальше тома невозможен.
Пути к устройствами DOS по определению являются полными. Сегменты с относительным путем к каталогу ( . и .. ) в них не допускаются. Они никогда не задаются относительно текущего каталога.
Пример. Способы задать ссылку на один и тот же файл
В следующем примере демонстрируются некоторые способы задать ссылку на файл с использованием API в пространстве имен System.IO. В этом примере создается экземпляр объекта FileInfo и используются его свойства Name и Length, чтобы отобразить имя и длину файла.
Нормализация путей
Практически все передаваемые в API Windows пути нормализуются. При нормализации в Windows выполняются следующие действия:
- Идентифицируется путь.
- Текущий каталог применяется к неполным (относительным) путям.
- Выполняется канонизация разделителей каталогов.
- Вычисляются относительные компоненты каталога ( . для текущего и .. для родительского каталога).
- Удаляются некоторые символы.
Нормализация осуществляется неявно, но при необходимости вы можете выполнить ее явно, вызвав метод Path.GetFullPath, который создает оболочку для вызова функции GetFullPathName(). Также можно вызвать функцию GetFullPathName() Windows напрямую с помощью P/Invoke.
Идентификация пути
На первом шаге процесса нормализации осуществляется идентификация типа пути. Пути могут относиться к одной из нескольких категорий:
- Пути к устройствам: начинаются с двух разделителей и знака вопроса или точки ( \\? или \\. ).
- UNC-пути: начинаются с двух разделителей без знака вопроса или точки.
- Полные пути DOS: начинаются с буквы диска, разделителя томов и компонентов ( C:\ ).
- Пути к устаревшим устройствам ( CON , LPT1 ).
- Пути относительно корня текущего диска: начинаются с одного разделителя компонентов ( \ ).
- Пути относительно текущего каталога указанного диска: начинаются с буквы диска и разделителя томов, но не содержат разделителя компонентов ( C: ).
- Пути относительно текущего каталога: начинаются с любых других символов ( temp\testfile.txt ).
Тип пути определяет, будет ли каким-либо образом применяться текущий каталог. Кроме того, от типа пути зависит применяемый корень.
Работа с устаревшими устройствами
Если путь указывает на устаревшее устройство DOS, например CON , COM1 или LPT1 , он преобразуется в путь к устройству путем добавления перед ним последовательности \\.\ и возвращается в таком виде.
Путь, который начинается с имени устаревшего устройства, всегда интерпретируется как путь к устаревшему устройству с помощью метода Path.GetFullPath(String). Например, путь к устройству DOS CON.TXT будет выглядеть как \\.\CON , а путь к устройству DOS COM1.TXT\file1.txt будет выглядеть как \\.\COM1 .
Применение текущего каталога
Если путь не является полным, система Windows применяет к нему текущий каталог. К UNC-путям и путям к устройствам текущий каталог не применяется. Также текущий каталог не применяется к полным путям к диску с разделителем C:\ .
Если путь начинается с одного разделителя компонентов, применяется диск текущего каталога. Например, для пути к файлу \utilities и текущего каталога C:\temp\ в результате нормализации будет получен путь C:\utilities .
Если путь начинается с буквы диска, разделителя томов и не содержит разделителя компонентов, применяется последний текущий каталог, установленный из командной оболочки. Если последний текущий каталог не был установлен, применяется диск сам по себе. Например, для пути D:sources , текущего каталога C:\Documents\ и последнего текущего каталога D:\sources\ на диске D: в результате будет получен путь D:\sources\sources . Пути, задаваемые относительно диска, являются распространенными источниками ошибок программ и логики скрипта. Предположение, что путь, начинающийся с буквы и двоеточия, не является относительным, очевидно неверно.
Если путь не начинается с разделителя, применяются текущий диск и текущий каталог. Например, для пути к файлу filecompare и текущего каталога C:\utilities\ в результате будет получен путь C:\utilities\filecompare\ .
Канонизация разделителей
Все символы косой черты ( / ) преобразуются в стандартные разделители Windows, то есть символы обратной косой черты ( \ ). Если они присутствуют, последовательность символов косой черты после первых двух таких символов свертывается в один символ косой черты.
Вычисление относительных компонентов
При обработке пути выполняется вычисление любых его компонентов или сегментов, которые состоят из одной или двух точек ( . или .. ):
Если обнаруживается одна точка, текущий сегмент удаляется, поскольку он ссылается на текущий каталог.
Если обнаруживаются две точки, удаляются текущий и родительский сегмент, поскольку в этом случае задается ссылка на родительский каталог.
Родительские каталоги удаляются только в том случае, если они не находятся после корня пути. Корень пути зависит от его типа. Это будет диск ( C:\ ) для путей DOS, сервер или общий сетевой ресурс для UNC-путей ( \\Server\Share ) и префикс пути к устройству для путей к устройствам ( \\?\ или \\.\ ).
Удаление знаков
Помимо удаленных ранее разделителей и относительных сегментов во время нормализации также удаляются некоторые дополнительные знаки:
Если сегмент заканчивается одной точкой, эта точка удаляется. (Сегмент, состоящий из одной или двух точек, нормализуется на предыдущем шаге. Сегмент, состоящий из трех или более точек, не нормализуется и фактически представляет собой допустимое имя файла или каталога.)
Если путь не заканчивается разделителем, удаляются все конечные точки и пробелы (U+0020). Если последний сегмент содержит только одну или две точки, к нему применяется приведенное выше правило для относительных компонентов.
Это правило устанавливает, что вы можете создать имя каталога с конечным пробелом, добавив разделитель после пробела.
Создавать имена каталогов или файлов с конечным пробелом нельзя. Наличие конечных пробелов может затруднить или исключить возможность доступа к каталогу. В связи с этим при попытке обработать каталоги или файлы, имена которых содержат конечные пробелы, происходит сбой приложения.
Пропуск нормализации
Как правило, любой путь, передаваемый в API Windows передается в функцию GetFullPathName и нормализуется. Существует одно важное исключение: путь к устройству, который начинается со знака вопроса, а не с точки. Если путь не начинается с последовательности \\?\ (обратите внимание на использование канонической формы с обратной косой чертой), он нормализуется.
Зачем нужно пропускать нормализацию? Существует три основных причины:
Получение путей, которые в обычных обстоятельствах недоступны, но являются допустимыми. Например, невозможно каким-либо иным способом получить доступ к файлу или каталогу с именем hidden. .
Повышение производительности за счет пропуска нормализации в тех случаях, когда нормализация уже выполнена.
Пропуск нормализации и проверки максимальной длины пути является единственным отличием между двумя видами синтаксиса путей к устройствам. В остальных аспектах они идентичны. Пропуск нормализации следует использовать с осторожностью, поскольку в этом случае легко получить пути, при работе с которыми в обычных приложениях будут возникать трудности.
Пути, начинающиеся с последовательности \\?\ , по-прежнему нормализуются, если явно передать их в функцию GetFullPathName.
Вы можете передавать пути длиной более MAX_PATH символов в функцию GetFullPathName без \\?\ . Она поддерживает пути произвольной длины, которая ограничивается лишь максимальным размером строки, поддерживаемым в Windows.
Регистр символов и файловая система Windows
Особенность файловой системы Windows заключается в том, что пользователи и разработчики, имеющие дело с другими операционными системами, могут сталкиваться с проблемами из-за того, что в именах каталогов и путях не учитывается регистр символов. Это значит, что в именах каталогов и файлов сохраняется регистр строк, используемый в момент их создания. Например, вызов метода
Тест по темам «Файлы и файловая система»,
«Программное обеспечение компьютера»
1.Файл это:
Г) программа или данные, имеющие имя и хранящиеся в долговременной памяти
2.Имя файла состоит из двух частей:
Б) имени и расширения
3.Имя файлу даёт:
В) программа при его создании
Г) пользователь
4.Расширение файлу присваивает:
А) программа при его создании
В)пользователь
5.Имя файла может включать до
В) 256 символов
6.Под расширение отводится
В) 3 символа
Хотя возможно до 256
7.В процессе форматирования диск разбивается на две области:
Б) область хранения и каталог
8.Одноуровневая файловая система
В)когда каталог диска представляет собой линейную последовательность имён файлов и соответствующих начальных секторов
9.Путь к файлу
Г)начинается с логического имени диска, затем записывается последовательность имён вложенных друг в друга папок, в последней из которых находится нужный файл
10.Выберите правильное имя файла
В) 12345.BMP
Г) SPRAVKI (расширения может и не быть, это не ошибка)
11.Операционная система относится к
Б) к системному программному обеспечению
12.Где хранится выполняемая в данный момент программа и обрабатываемые данные
В) в оперативной памяти
13.Каталогом называется место на диске имя и содержащее
Б) файлы и другие каталоги
14.Операционная система это:
Г) комплекс программ, организующих управление работой компьютера и его взаимодействие с пользователем
15.Имя логического диска обозначается
Г) латинскими буквами
16.Корневой каталог – это
А) первый верхний (зависит от модели, например в дереве папок корневой каталог в самом верху обычно)
Б) самый нижний (зависит от модели, впринцепе корни внизу)
Г) самый большой (да, потому что содержит все остальные)
17.Путь к файлу не включает .
В) команду
18.Состояние операционной системы, при котором она перестает выдавать результаты и реагировать на запросы. - это ..
Г) зависание
19.Дано дерево каталогов. Определите полное имя файла Doc3. .
А) A:\DOC3
Б) A:\DOC3\Doc3
В) A:\DOC3\Doc1
Г) A:\TOM3\Doc3
20.В процессе загрузки операционной системы происходит:
В) последовательная загрузка файлов операционной системы в оперативную память
21.Приложение - это
Г) программа, с помощью которой пользователь решает свои прикладные задачи
22.Приложение функционирует под управлением
В) операционной системы
Г) пользователя
Управляют приложением оба
23.К приложения общего назначения не относятся:
В) звуковые редакторы
Новые вопросы в Информатика
Закончите предложенияРобочий лист . С помощью робочего листа. Число столбцов . Число строк . Ячейка-это . Диапозон-это . С помощью диалогового о … кна Формат ячеек .
Надо сделать проектную работу Тема:программы предназначеные для создания 3d графики
Даны три числа в десятичной системе числа: A=22, B=17, C=28. Переведите A, B и C в двоичную систему счисления и выполните поразрядно логические операц … ии (A v B) & C. Ответ дайте в десятичной системе счисления
Помогите пожалуйста решить задачу Найдите площадь фигуры F. Запишите ответ БЕЗ единиц измерения. *
Вопросы и задания 3 Какие из перечисленных ниже предложений являются суждениями и каково значение их истинности: 1.сижу и смотрю; 2.сумма внутренних у … глов треугольника равна двум прямым углам; 3.верно ли, что п=3,1415926. 4.44>88; 5.математическое доказательство; 6.Z + 5 = 45.
Вопросы и задания 2 Укажите для нижеприведенных высказываний, сложные они или простые: 1. Если две прямые параллельны, то они пересекаются. 2. Идет до … ждь. 3. На следующем уроке будет либо контрольная работа, либо свободный урок. 4. Завтра или сегодня брат приедет к нам в гости. 5. Треугольники с равными сторонами не равнобедренны. 6. Завтра премьера в нашем театре. 7. Это число не простое. 8. Сегодня, завтра и каждый день я буду учиться. 9. +x2 x+c +0,1 а 10. Число 4 больше числа 2.
Вопросы и задания 1 Какие из перечисленных ниже предложений являются суждениями? 1. Некоторые люди имеют голубые глаза. 2. Вы были в театре? 3. Мойте … руки перед едой. 4. Если будет дождь, то мы поедем за грибами. 5. Завтра я сдам экзамен, либо останусь на второй год. 6. Существую такие люди, которые не любят животных. 7. Завтра я пойду на каток. 8. Если я поеду туда, то смогу ли вернуться? 9. IF X>1 THEN Y=0
10. Состояние операционной системы, при котором она перестает выдавать результаты и реагировать на запросы. - это ..
А )отключение принтера
В) отключение монитора
11.Приложение - это
А) пользователь, который решает свои прикладные задачи
Б) программа, с помощью которой операционная система решает свои прикладные задачи
В) устройства, с помощью которых пользователь решает свои прикладные задачи
Г) программа, с помощью которой пользователь решает свои прикладные задачи
12. Перечислите часто встречающиеся операционные системы .
13. Какие устройства вывода вы знайте, перечислите их.
Тест по темам «Файлы и файловая система»,
«Программное обеспечение компьютера»
1.Имя файла состоит из двух частей:
А) адреса первого сектора и объёма файла
Б) имени и расширения
В) области хранения файлов и каталога
Г) имени и адреса первого сектора
2.Расширение файлу присваивает:
А) программа при его создании
Г) операционная система
3.Одноуровневая файловая система
А) каталог диска представляет собой иерархическую последовательность имён файлов
Б) представляет собой систему вложенных папок
В) когда каталог диска представляет собой линейную последовательность имён файлов и соответствующих начальных секторов
Г) каталог диска представляет собой геометрическую последовательность имён файлов
А) область хранения данных на диске
Б) программа или данные, хранящиеся в долговременной памяти
В) программа или данные, имеющие имя и хранящиеся в оперативной памяти
Г) программа или данные, имеющие имя и хранящиеся в долговременной памяти
5.Путь к файлу
А) начинается с логического имени диска, затем записывается нужный файл , затем последовательность имён вложенных друг в друга папок
Б) начинается с последовательности имён вложенных друг в друга папок, в последней из которых находится нужный файл, затем записывается логическое имя диска,
В) начинается с последней папки, в которой находится нужный файл, затем записывается логическое имя диска
Г) начинается с логического имени диска, затем записывается последовательность имён вложенных друг в друга папок, в последней из которых находится нужный файл
6.Операционная система относится к
А) к программам – оболочкам
Б) к системному программному обеспечению
В) к прикладному программному обеспечению
7.Начальная загрузка операционной системы осуществляется
А) клавишами ALT+DEL
Б) клавишами CTRL+DEL
В) при включении компьютера
8.Операционная система это:
А) техническая документация компьютера
Б) совокупность устройств и программ общего пользования
В) совокупность основных устройств компьютера
Г) комплекс программ, организующих управление работой компьютера и его взаимодействие с пользователем
9.Путь к файлу не включает .
10.Состояние операционной системы, при котором она перестает выдавать результаты и реагировать на запросы. - это ..
В этой инструкции я покажу, как скопировать полный путь к файлу в Windows 10. Иногда нам для поиска информации или работы других программ, необходимо скопировать путь расположения файла, папки или каталога. Чтобы найти определенный файл в иерархии каталогов, необходимо указать абсолютный путь к нему.
Как посмотреть путь к файлу?
С помощью Shift
Например, путь к рабочему столу Windows 10 на моем компьютере имеет вид ⇒ C:\Users\Alex\Desktop, а к папке Temp ⇒ C:\Program Files (x86)\Temp
Через свойства папки или файла
Следующим способом удобно смотреть расположение папки или документа, но скопировать весь путь не получиться, так как последняя директория в пути не указывается.
Например путь к графическому изображению help.jpg
вместо ⇒E:\Фотоматериалы и изображения\Иконки\help.jpg
будет выглядеть как ⇒
E:\Фотоматериалы и изображения\Иконки
Узнаем путь к файлу в командной строке Windows
- Открываем командную строку. Сделать это можно, нажав комбинацию клавиш Win+R и в открывшейся строке ввести cmd.
- Перетаскиваем иконку файла или папки в основное окно программы cmd.exe.
- Полный путь до файла будет скопирован в окно командной строки. Если это будет файл запуска, например exe, то при нажатии кнопки Ввод (Enter) запуститься программа.
Для примера создадим документ Word с именем Doc3 и поместим его в любую папку и посмотрим его путь в командной строке.
Как скопировать путь к файлу на Mac
Пути к файлам и папкам на Маке можно узнать так же, как и в Виндовс через Shift, только названия кнопок другие ⇒
В буфер обмена скопируется полный путь к файлу например ⇒
Скопировать полный путь до любого файла достаточно просто и с этим справится любой пользователь ПК или ноутбука.
Абсолютный и относительный пути
Путь (от англ. path) — набор символов, показывающий расположение файла или каталога в файловой системе.
Например, в следующей записи G:\EPIM Pro\Необходимые программы\ABBYY FineReader 10.0.102.95 Pro\readme.txt
readme.txt — это имя файла, а G:\EPIM Pro\Необходимые программы\ABBYY FineReader 10.0.102.95 Pro — путь к нему.
Полный (абсолютный) путь к файлу начинается с логического имени диска. Далее идут имена вложенных друг в друга папок (их может быть сколько угодно много). В последней папке содержится требуемый файл.
Стандартный путь состоит из трех компонентов ⇒
Если присутствуют все три компонента, путь является абсолютным. Полный путь всегда начинается с корневого каталога.
Если буква тома или диска не указана и имя каталога начинается с символа разделителя, то такой путь задан относительно корня текущего диска. В противном случае путь задан относительно текущего каталога.
В следующей таблице показаны некоторые возможные пути к каталогам и файлам ⇒
Читайте также: