Консультация № 142099
24.08.2008, 13:33
0.00 руб.
0 1 1
Здравствуйте, уважаемые специалисты! ОС: Windows XP. При копировании разного содержимого иногда система говорит о том, что копирование невозможно, так как имя файла или его расширение имеют слишком большую длину. Скажите, пожалуйста, на какое количество знаков/символов ориентироваться, чтобы избежать подобных сообщений?
С уважением, Валерий.

Обсуждение

Неизвестный
24.08.2008, 14:07
общий
это ответ
Здравствуйте, Кадынцев Валерий Васильевич!
Длина имени файла в Windows ограничена 256 символами. В программировании используется константа MAX_PATH, которая равна 260. Судя по названию, она означает максимальную длину пути в Windows, которая складывается из максимальной длины имени каталога 255 символов + слэш на конце + завершающий нулевой символ, и из символов, означающих букву диска в количестве трёх штук (например, "C:"). Всё это вместе даёт длину пути 260. На самом деле это ограничение в 260 символов есть только в Windows API. В самой файловой системе (FAT32 или NTFS) максимальная длина имени файла ограничена 255 символами, но максимальная длина пути может быть гораздо больше, чем поддерживает WinAPI. Поэтому, ограничение на длину пути может быть преодолено (для специалистов, оригинал: The wide (Unicode) versions of the CreateDirectory, FindFirstFile, GetFileAttributes, and SetFileAttributes functions permit paths that exceed the MAX_PATH length if the path has the "\\?" or "\\?\UNC" prefix. These prefixes direct the functions to turn off path parsing. Use the "\\?" prefix with paths for local storage devices and the "\\?\UNC" prefix with paths having the Universal Naming Convention format. ).
Здесь >> - подробнее. Насчет расширения там хорошо сказано. Расширение определяет тип файла и его принадлежность к группе программ. Я встречал расширения более трех общепринятых символов, но это - частные случаи и узкая специализация (для семейства Windows). В частных случаях ничто не мешает попытаться изменить расширение, скопировать, а потом вернуть обратно.
имя файла или его расширение

Это внесено программистами. Чаще всего превышает именно имя (вспомните известное "...неправильное имя пользователя или пароль..." при неудачных авторизациях на сервисах).
Форма ответа