Что такое адрес файла папки

Обновлено: 21.11.2024

Члены многих типов в пространстве имен System.IO включают параметр пути, который позволяет указать абсолютный или относительный путь к ресурсу файловой системы. Затем этот путь передается API-интерфейсам файловой системы Windows. В этом разделе обсуждаются форматы путей к файлам, которые можно использовать в системах Windows.

Традиционные пути DOS

Стандартный путь DOS может состоять из трех компонентов:

  • Буква тома или диска, за которой следует разделитель томов ( : ).
  • Имя каталога. Символ разделителя каталогов разделяет подкаталоги во вложенной иерархии каталогов.
  • Необязательное имя файла. Символ разделителя каталогов разделяет путь к файлу и имя файла.

Если присутствуют все три компонента, путь является абсолютным. Если буква тома или диска не указана, а имя каталога начинается с символа разделителя каталогов, путь является относительным от корня текущего диска. В противном случае путь указывается относительно текущего каталога. В следующей таблице показаны некоторые возможные пути к каталогам и файлам.

< td>Абсолютный путь от корня текущего диска.
Путь Описание
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/FQDN-адресом (поддерживаются как IPv4, так и v6).
  • Имя общего ресурса, которое отделяется от имени хоста символом \ . Вместе имя сервера и общего ресурса составляют том.
  • Имя каталога. Символ разделителя каталогов разделяет подкаталоги во вложенной иерархии каталогов.
  • Необязательное имя файла. Символ разделителя каталогов разделяет путь к файлу и имя файла.

Ниже приведены некоторые примеры путей UNC:

Путь Описание
\\system07\C$\< /td> Корневой каталог диска 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\ часть server/share — это server1\utilities . Это важно при вызове такого метода, как Path.GetFullPath(String, String) с относительными сегментами каталога; невозможно пройти мимо тома.

Пути устройств DOS являются полными по определению и не могут начинаться с сегмента относительного каталога ( . или .. ). Текущие каталоги никогда не входят в их использование.

Пример: способы ссылки на один и тот же файл

В следующем примере показаны некоторые способы обращения к файлу при использовании API в пространстве имен System.IO. В примере создается экземпляр объекта FileInfo и используются его свойства Name и Length для отображения имени файла и длины файла.

Нормализация пути

Почти все пути, передаваемые API Windows, нормализованы. Во время нормализации Windows выполняет следующие шаги:

  • Определяет путь.
  • Применяет текущий каталог к ​​частично определенным (относительным) путям.
  • Канонизирует разделители компонентов и каталогов.
  • Вычисляет относительные компоненты каталога ( . для текущего каталога и .. для родительского каталога).
  • Удаляет определенные символы.

Эта нормализация происходит неявно, но вы можете сделать это явно, вызвав метод Path.GetFullPath, который заключает в себе вызов функции GetFullPathName(). Вы также можете вызвать функцию Windows GetFullPathName() напрямую, используя 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: — D:\sources\, результатом будет D:\sources\sources. Эти «относительные» пути являются распространенным источником логических ошибок программ и сценариев. Предполагать, что путь, начинающийся с буквы и двоеточия, не является относительным, явно неверно.

Если путь начинается не с разделителя, применяются текущий диск и текущий каталог. Например, если путь — filecompare, а текущий каталог — C:\utilities\ , результатом будет C:\utilities\filecompare\ .

Канонизировать разделители

Все прямые косые черты ( / ) преобразуются в стандартный разделитель Windows — обратную косую черту ( \ ). Если они присутствуют, ряд косых черт, следующих за первыми двумя косыми чертами, сворачивается в одну косую черту.

Оценить относительные компоненты

По мере обработки пути оцениваются любые компоненты или сегменты, состоящие из одной или двух точек ( . или .. ):

На один период текущий сегмент удаляется, так как он ссылается на текущий каталог.

Для двойной точки текущий сегмент и родительский сегмент удаляются, поскольку двойная точка относится к родительскому каталогу.

Родительские каталоги удаляются только в том случае, если они не находятся за корнем пути. Корень пути зависит от типа пути. Это диск ( C:\ ) для путей DOS, сервер/общий ресурс для UNC ( \\Server\Share ) и префикс пути к устройству для путей к устройствам ( \\?\ или \\.\ ).

Обрезать символы

Вместе с удаленными ранее рядами разделителей и относительных сегментов, при нормализации удаляются некоторые дополнительные символы:

Если сегмент заканчивается одним периодом, этот период удаляется. (Сегмент из одной или двух точек нормализуется на предыдущем шаге. Сегмент из трех и более точек не нормализуется и фактически является допустимым именем файла/каталога.)

Если путь не заканчивается разделителем, все завершающие точки и пробелы (U+0020) удаляются. Если последний сегмент представляет собой просто одинарную или двойную точку, он подпадает под действие приведенного выше правила относительных компонентов.

Это правило означает, что вы можете создать имя каталога с завершающим пробелом, добавив завершающий разделитель после пробела.

Вы никогда не должны создавать каталог или имя файла с пробелом в конце. Конечные пробелы могут затруднить или сделать невозможным доступ к каталогу, и приложения обычно не работают при попытке обработать каталоги или файлы, имена которых содержат конечные пробелы.

Пропустить нормализацию

Обычно любой путь, переданный API Windows, (фактически) передается функции GetFullPathName и нормализуется. Есть одно важное исключение: путь к устройству начинается со знака вопроса, а не с точки. Если путь не начинается точно с \\?\ (обратите внимание на использование канонической обратной косой черты), он нормализуется.

Почему вы хотите пропустить нормализацию? Есть три основные причины:

Чтобы получить доступ к путям, которые обычно недоступны, но разрешены. Файл или каталог, называемый скрытым. , например, невозможно получить доступ каким-либо другим способом.

Чтобы повысить производительность, пропустив нормализацию, если она уже была выполнена.

Пропуск проверки нормализации и максимального пути — единственное различие между двумя синтаксисами пути к устройству; в остальном они идентичны. Будьте осторожны, пропуская нормализацию, так как вы можете легко создать пути, с которыми "обычным" приложениям будет сложно работать.

Пути, начинающиеся с \\?\, по-прежнему нормализуются, если вы явно передаете их функции GetFullPathName.

Вы можете передавать пути, содержащие более MAX_PATH символов, в GetFullPathName без \\?\ . Он поддерживает пути произвольной длины вплоть до максимального размера строки, который может обрабатывать Windows.

Case и файловая система Windows

Особенность файловой системы Windows, которая сбивает с толку пользователей и разработчиков, отличных от Windows, заключается в том, что в именах путей и каталогов не учитывается регистр. То есть имена каталогов и файлов отражают регистр строк, используемых при их создании. Например, вызов метода

Бендж Эдвардс

Бендж Эдвардс
помощник редактора

Бендж Эдвардс — помощник редактора How-To Geek. Более 15 лет он писал о технологиях и истории технологий для таких сайтов, как The Atlantic, Fast Company, PCMag, PCWorld, Macworld, Ars Technica и Wired. В 2005 году он создал блог Vintage Computing and Gaming, посвященный истории технологий. Он также создал подкаст The Culture of Tech и регулярно участвует в подкасте Retronauts о ретро-играх. Подробнее.

Иногда удобно скопировать полный путь к файлу или папке в Windows 10 в буфер обмена.Таким образом, вы можете быстро вставить путь в диалоговое окно открытия или загрузки, не просматривая файл. К счастью, есть простой способ сделать это. Вот как.

Найдите файл или папку, путь к которой вы хотите скопировать, в проводнике. Удерживая нажатой клавишу Shift на клавиатуре, щелкните по нему правой кнопкой мыши. В появившемся контекстном меню выберите «Копировать как путь».

(Расположение «Копировать как путь» в списке контекстного меню зависит от настроек вашей системы и типа файла, который вы щелкаете правой кнопкой мыши.)

При этом полный путь к файлу будет скопирован в буфер обмена Windows. Например, путь может выглядеть примерно так: «C:\Users\redwolf\Desktop\Example Images\Picture.jpg».

Затем вы можете вставить путь куда угодно, например, в диалоговое окно загрузки файла в веб-браузере.

Этот совет также помогает, когда вы взламываете реестр, чтобы добавить какое-либо приложение в контекстное меню рабочего стола, запускаете команды в командной строке или PowerShell и делаете что-либо еще, для чего требуется полный путь к файлу. Его не нужно вводить.

  • › Что такое компьютерные файлы и папки?
  • › Как запустить несколько приложений одновременно в Windows 10
  • › Почему прозрачные чехлы для телефонов желтеют?
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
  • › Что такое GrapheneOS и как она делает Android более приватным?
  • › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
  • › Что означает XD и как вы его используете?
  • › Почему СМС должен умереть

Файловая система хранит и упорядочивает файлы на каком-либо носителе, как правило, на одном или нескольких жестких дисках, таким образом, чтобы их можно было легко извлечь. Большинство используемых сегодня файловых систем хранят файлы в древовидной (или иерархической) структуре. На вершине дерева находится один (или несколько) корневых узлов. В корневом узле находятся файлы и каталоги (папки в Microsoft Windows). Каждый каталог может содержать файлы и подкаталоги, которые, в свою очередь, могут содержать файлы и подкаталоги и т. д., потенциально до почти безграничной глубины.

В этом разделе рассматриваются следующие вопросы:

Что такое путь?

На следующем рисунке показано примерное дерево каталогов, содержащее один корневой узел. Microsoft Windows поддерживает несколько корневых узлов. Каждый корневой узел сопоставляется с томом, например C:\ или D:\ . ОС Solaris поддерживает один корневой узел, который обозначается косой чертой / .

Пример структуры каталога

Файл идентифицируется по его пути в файловой системе, начиная с корневого узла. Например, файл statusReport на предыдущем рисунке описывается следующей нотацией в ОС Solaris:

В Microsoft Windows отчет о состоянии описывается следующими обозначениями:

Символ, используемый для разделения имен каталогов (также называемый разделителем), зависит от файловой системы: ОС Solaris использует прямую косую черту ( / ), а Microsoft Windows использует обратную косую черту ( \).

Относительно или абсолютно?

Путь может быть относительным или абсолютным. Абсолютный путь всегда содержит корневой элемент и полный список каталогов, необходимых для поиска файла. Например, /home/sally/statusReport — это абсолютный путь. Вся информация, необходимая для поиска файла, содержится в строке пути.

Для доступа к файлу относительный путь необходимо объединить с другим путем. Например, joe/foo — это относительный путь. Без дополнительной информации программа не сможет надежно найти каталог joe/foo в файловой системе.

Символические ссылки

Объекты файловой системы чаще всего представляют собой каталоги или файлы. С этими предметами знаком каждый. Но некоторые файловые системы также поддерживают символические ссылки. Символическая ссылка также называется символической ссылкой или мягкой ссылкой.

символическая ссылка — это специальный файл, который служит ссылкой на другой файл. По большей части символические ссылки прозрачны для приложений, и операции с символическими ссылками автоматически перенаправляются к цели ссылки. (Файл или каталог, на который указывает ссылка, называется целью ссылки.) Исключения составляют случаи, когда символическая ссылка удаляется или переименовывается, и в этом случае удаляется или переименовывается сама ссылка, а не цель. ссылки.

На следующем рисунке logFile кажется пользователю обычным файлом, но на самом деле это символическая ссылка на каталог dir/logs/HomeLogFile . HomeLogFile является целью ссылки.

Пример символической ссылки.

Символическая ссылка обычно прозрачна для пользователя. Чтение или запись символической ссылки аналогичны чтению или записи любого другого файла или каталога.

Фраза разрешение ссылки означает замену символической ссылки фактическим местоположением в файловой системе. В этом примере разрешение logFile дает dir/logs/HomeLogFile .

В реальных сценариях большинство файловых систем широко используют символические ссылки. Иногда небрежно созданная символическая ссылка может привести к циклической ссылке. Циклическая ссылка возникает, когда цель ссылки указывает на исходную ссылку. Циклическая ссылка может быть косвенной: каталог a указывает на каталог b, который указывает на каталог c, содержащий подкаталог, указывающий обратно на каталог a. Циклические ссылки могут вызвать хаос, когда программа рекурсивно перемещается по структуре каталогов. Однако этот сценарий был учтен и не приведет к бесконечному циклу вашей программы.

На следующей странице обсуждается сердцевина файлового ввода-вывода в языке программирования Java — класс Path.

Как установить папку с документами по умолчанию в Windows

Внимание!
На компьютерах University, работающих под управлением операционной системы Windows, документы не сохраняются автоматически на сетевой диск H:. Вместо этого документы по умолчанию хранятся на диске C:, который хранится только локально (без резервного копирования) на компьютере.
Каждый раз, когда вы получаете новый университетский компьютер под управлением Windows, обязательно следуйте приведенным ниже инструкциям, чтобы настроить Папка документов по умолчанию должна быть вашим сетевым диском H:. В противном случае вы не сможете получить доступ к сохраненным файлам с другого компьютера или потеряете данные, если ваш университетский компьютер выйдет из строя.

Windows 10

  1. Нажмите кнопку [Windows] > выберите "Проводник".
  2. На левой боковой панели щелкните правой кнопкой мыши "Документы" > выберите "Свойства".
  3. На вкладке "Местоположение" > введите "H:\Docs"
  4. Нажмите [Применить] > Нажмите [Нет], когда будет предложено автоматически переместить все файлы в новое место > Нажмите [ОК].
  5. Если вы считаете, что у вас есть документы, сохраненные в папке C:\Docs, вы можете перейти в это место и вручную скопировать файлы на диск H:\.

Windows 7

Если вы не видите папку "Документы" в папке "Библиотеки", нажмите на маленький треугольник рядом с "Библиотеки" на левой панели, чтобы развернуть папку.

  1. Откройте Windows "Пуск" > "Компьютер".
  2. Нажмите треугольник рядом с пунктом "Документы".
  3. Щелкните правой кнопкой мыши папку "Мои документы".
  4. Нажмите "Свойства" > выберите вкладку "Местоположение".
  5. Введите "H:\docs" на панели > Нажмите [Применить].
  6. В окне сообщения может появиться вопрос, хотите ли вы переместить содержимое папки в новую папку. Щелкните [Нет]. Если у вас есть файлы, сохраненные на диске C:, вы можете переместить их вручную.
  7. Все файлы теперь по умолчанию сохраняются на диск H:.

Примечание.
Этот параметр зависит от машины. Для преподавателей и сотрудников это означает, что вам нужно выполнить это только один раз на своем офисном компьютере. Для учащихся это означает, что каждый раз при входе на новый компьютер Windows University вам придется изменять этот параметр, если это уже не сделал другой пользователь.

Ключевые слова: новые окна, новые компьютеры, папка Windows 10, папка Windows 7, папка документов, папка моих документов, изменить местоположение папки, изменить место сохранения, изменить местоположение сохранения, сбросить местоположение папки, сбросить папку сохранения, сбросить папку документов, сбросить папку моих документов, папку документов, изменить место сохранения по умолчанию, Windows 10, Windows 7

Поделиться этой публикацией

Ресурсы блога

Cedarville предлагает более 150 академических программ для выпускников, студентов и онлайн-студентов. Седарвиль известен своим библейским мировоззрением, академическими успехами, целенаправленным ученичеством и подлинной христианской общиной.

Университет Седарвилля

для Слова Божьего и свидетельства об Иисусе Христе

Читайте также: