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

28747
Ron Tuffin

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

56

4 ответа на вопрос

47
Adam Matan

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

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

Вы должны упомянуть, что вы можете обрабатывать пути, которые превышают этот предел, добавляя к нему префикс `\\? \` (Я думаю, что это была та последовательность символов). Joey 14 лет назад 4
Вы также должны указать ограничение для путей Unicode, упомянутых во втором абзаце: ~ 32k akira 14 лет назад 3
260? 256 символов, игнорируя диск: \ и терминатор. Это 2009 год, почему мы получаем только один байт персонажей для игры? Phoshi 14 лет назад 0
@Phoshi API для использования более длинных путей по умолчанию не используются ОС, потому что передача произвольно длинных строк приложениям, которые были плохо написаны разработчиками, которые знали, что путь никогда не может быть длиннее 260 символов, и решили выделить фиксированную длину Массив для его хранения приведет к огромному количеству переполнений буфера, что приведет к сбою и / или эксплуатации приложений. Немного лучшие реализации разработчиками с таким же неправильным знанием могли бы прерваться, потому что их проверка пути выявила слишком длинную ошибку. Dan Neely 11 лет назад 0
15
joe

Путь к файлу XP - 250 символов

Путь к файлу Vista - 260 символов

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

Самый длинный путь в полуочищенной установке Windows Vista составляет 195 символов:

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

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

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

это просто верно, если вы не используете unicode-api, который немного расширяет лимит (~ 32k, см. http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx# максимальный% 5Fpath% 5Flength) akira 14 лет назад 5
хммм. в таком случае ограничение в Win7 должно быть около 265 символов, не так ли? quack quixote 14 лет назад 1
Зачем им увеличивать лимит на десять символов? Кажется, это того не стоит. Phoshi 14 лет назад 0
это неверно Максимальная длина имени файла по-прежнему составляет 255 символов в любой Windows, так как это ограничение NTFS. phuclv 5 лет назад 0
7
ST3

Windows constant MAX_PATH is equal to 260 as other answers says, however, real longest path is 32767.

See here.

32k is while using UNICODE, but now we must use it, so we should also use such max path length.

Also, you can take a look into my answer in SO which explains some things more detailed about maximum path length.

0
phuclv

«Классический» предел 260 символов: drive letter+ :\+ 255 characters of filename+ \(или для округления) +, null terminatorкак сказано в других ответах

Однако реальный внутренний предел 32767 символов, которые могут быть достигнуты путем добавления, \\?\чтобы получить полный путь

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

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

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

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

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