Какова самая длинная строка пути к файлу, которую может обрабатывать Windows?

Вопрос или проблема

Какова максимальная длина пути к файлу, с которой может работать Windows?

Максимальная длина пути (из MSDN)

В Windows API (с некоторыми исключениями, обсуждаемыми в следующих параграфах) максимальная длина пути составляет MAX_PATH, который определён как 260 символов. Локальный путь имеет следующую структуру: буква диска, двоеточие, обратный слеш, компоненты, разделённые обратными слешами, и завершающий нулевой символ. Например, максимальный путь на диске D – “D:\<некоторый путь длиной 256 символов><NUL>”, где “<NUL>” представляет собой невидимый завершающий нулевой символ для текущей кодовой страницы системы. (Символы < > используются здесь для визуальной ясности и не могут быть частью допустимой строки пути.)

Длина пути к файлу в XP – 250 символов

Длина пути к файлу в Vista – 260 символов

Максимальная длина пути на чистой установке Windows XP составляет 152 символа.

Максимальная длина пути на полу-чистой установке Windows Vista составляет 195 символов.

Windows XP позволяет именам файлов длиной до 255 символов

Windows Vista позволяет даже более длинные имена файлов, содержащие до 260 символов.

http://www.codinghorror.com/blog/archives/000729.html

( архивная версия вышеупомянутой веб-статьи: http://web.archive.org/web/20100221082159/http://www.codinghorror.com/blog/2006/11/filesystem-paths-how-long-is-too-long.html

новая версия:
https://blog.codinghorror.com/filesystem-paths-how-long-is-too-long/ )

“классический” предел составляет 260 символов: буква диска + :\ + 255 символов имени файла + \ (или для округления) + нулевой терминатор, как сказано в других ответах.

Тем не менее, реальный внутренний предел составляет 32767 символов, который можно достичь, добавив \\?\, чтобы получить полностью квалифицированный путь.

Windows API имеет множество функций, которые также имеют версии Unicode для обеспечения пути увеличенной длины с максимальной общей длиной пути в 32 767 символов. Этот тип пути состоит из компонентов, разделённых обратными слешами, каждый из которых имеет значение, возвращаемое в параметре lpMaximumComponentLength функции GetVolumeInformation (это значение обычно составляет 255 символов). Чтобы указать путь увеличенной длины, используйте префикс "\\?". Например, "\\?\D:\очень длинный путь".

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

Начиная с версии 1607 Windows 10, предел MAX_PATH также был удалён, хотя и не по умолчанию.

Начиная с Windows 10, версии 1607, ограничения MAX_PATH были удалены из обычных Win32 функций работы с файлами и директориями. Однако вы должны перейти на новое поведение.

https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file

Обратите внимание, что ответ Джо совершенно неверен. Максимальная (длинная) длина имени файла всегда была 255 символов, а MAX_PATH всегда оставался равным 260.

Константа Windows MAX_PATH равна 260, как указывают другие ответы, однако реальная максимальная длина пути составляет 32767.

Смотрите здесь.

32k — это при использовании UNICODE, но теперь мы должны его использовать, так что мы также должны использовать такую максимальную длину пути.

Также вы можете ознакомиться с моим ответом на SO, который объясняет некоторые вещи более подробно о максимальной длине пути.

Ответ или решение

Вопрос о максимальной длине пути к файлам в Windows имеет несколько важных аспектов, которые стоит учитывать для полного понимания:

  1. Традиционное ограничение: В стандартном API Windows максимальная длина пути определена как MAX_PATH, что равно 260 символам. Это ограничение включает букву диска, двоеточие, обратные слэши, компоненты пути и терминальный нулевой символ. Например, максимальный путь на диске D может выглядеть так: D:\<какая-либо строка пути длиной 256 символов><NUL>.

  2. Изменения в различных версиях Windows:

    • В Windows XP максимальная длина пути составляет 260 символов, но на практике, из-за структуры файловой системы, длина часто оказывается меньше — около 152 символов.
    • В Windows Vista максимальная длина пути остается 260 символов, но также может варьироваться в зависимости от стиля установки.
    • В Windows 10 (начиная с версии 1607) ограничения максимальной длины пути в 260 символов были сняты, однако для этого необходимо активировать данную опцию.
  3. Возможность использования длинных путей: Реальное внутреннее ограничение длины пути в Windows составляет 32767 символов. Чтобы воспользоваться этим ограничением, необходимо добавить префикс \\?\ перед путем. Например, путь может выглядеть так: \\?\D:\очень длинный путь. Эти длинные пути поддерживают только функции API, которые используют UNICODE.

  4. Другие подходы: Если по какой-либо причине использование длинных путей с префиксом невозможно, можно рассмотреть возможность монтирования длинных путей на букву диска с помощью команд subst или diskpart. Также можно использовать символические ссылки или джанкции, чтобы укоротить путь.

В заключение, хотя исторически максимальная длина пути в Windows ограничена 260 символами, в современных версиях системы, за счет использования длинных путей с префиксом, это ограничение может быть существенно увеличено до 32767 символов. Рекомендуется использовать Unicode и следовать последним версиям Windows для оптимальной работы с длинными путями к файлам.

Оцените материал
Добавить комментарий

Капча загружается...