Максимальная длина имени файла в NTFS (Windows XP и Windows Vista)?

Я создаю таблицу базы данных, в которой будут храниться имена файлов загруженных файлов. Какова максимальная длина имени файла в NTFS, используемая Windows XP или Vista?

Ответ 1

Отдельные компоненты имени файла (т.е. Каждый подкаталог вдоль пути и окончательное имя файла) ограничены 255 символами, а общая длина пути - примерно 32 000 символов.

Однако в Windows нельзя превышать значение MAX_PATH (259 символов для файлов, 248 для папок). См. Http://msdn.microsoft.com/en-us/library/aa365247.aspx для получения полной информации.

Ответ 2

Это 257 символов. Точнее: Сама NTFS накладывает максимальную длину файла в несколько тысяч символов (около 30 000 штук). Тем не менее, Windows налагает максимальную длину 260 для Path + Filename. Дисковод + папка занимает не менее 3 символов, поэтому вы получите 257.

Ответ 3

Вот что говорит "Необработанное исключение" в Framework 4.5 при попытке сохранить файл с длинным именем файла:

Указанный путь, имя файла или оба они слишком длинные. Полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов.

screenshot

Ответ 4

199 в Windows XP NTFS, я только что проверил.

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

Есть ли какие-то другие ограничения, ограничивающие это, интересно? Попробуйте сами.

Ответ 5

Согласно MSDN, это 260 символов. Он включает "<NUL>" - невидимый завершающий нулевой символ, поэтому фактическая длина равна 259.

Но прочитайте статью, это немного сложнее.

Ответ 6

Длина в NTFS - 255. Поле NameLength в атрибуте $Filename NTFS является байтом без смещения; это дает диапазон 0-255.

Имя файла iself может находиться в разных "пространствах имен". Пока что есть: POSIX, WIN32, DOS и (WIN32DOS - когда имя файла может быть изначально именем DOS). (Поскольку строка имеет длину, она может содержать \0, но это может привести к проблемам и не находится в указанных выше пространствах имен.)

Таким образом, имя файла или каталога может содержать до 255 символов. При указании полного пути в Windows необходимо указать префикс пути \\? \ (Или использовать \\?\UNC\server\share для путей UNC), чтобы пометить этот путь как расширенный (~ 32 тыс. Символов), Если ваш путь длиннее, вам придется установить свой рабочий каталог по пути (тьфу - побочные эффекты из-за настройки всего процесса).

Ответ 8

Я добавляю это к вышеуказанному одобренному ответу.

Чтобы быть чистым, причина, по которой люди считают, что это 255-260 символов, - это то, что поддерживает Windows Explorer. Он будет ошибочно делать что-то вроде копии файла на имена файлов дольше, чем это. Тем не менее, программа может читать и записывать гораздо более длинные имена файлов (именно так вы добираетесь до длин, на которые ссылается Explorer, в первую очередь). Microsoft "рекомендуется исправить" в таких ситуациях, как это, открыть файл в оригинальной программе, которая его написала, и переименовать его.

Ответ 9

Согласно новой документации Windows SDK (8.0), создается новый предел пути. Существует новый набор функций обработки пути, а определение PATHCCH_MAX_CCH выглядит следующим образом:

// max # of characters we support using the "\\?\" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH             0x8000

Ответ 10

В этой части официальной документации четко сказано, что это 255 символов Unicode для NTFS, exFAT и FAT32 и 127 символов Unicode или 254 ASCII для UDF.

Кроме того, максимальная длина имени пути всегда составляет 32 760 символов Юникода, причем каждый компонент пути не должен превышать 255 символов.

Ответ 11

255 символов, хотя полный путь не должен быть длиннее этого. В Википедии есть хорошая таблица: http://en.wikipedia.org/wiki/Filename.

Ответ 12

На самом деле это 256, см. Сравнение функциональных возможностей файловой системы, лимиты.

Повторить сообщение на http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html

"Предполагая, что мы говорим о NTFS, а не FAT32," 255 символов для пути + файл "является ограничением Explorer, а не самой файловой системы. NTFS поддерживает пути длиной до 32 000 символов Unicode, причем каждый до 255 символов.

Проводник и API Windows ограничивают до 260 символов для путь, который включает букву диска, двоеточие, разделительную косую черту и завершающий нулевой символ. Можно прочесть более длинный путь в Windows, если вы запустите его с помощью \\"

Если вы прочтете вышеуказанные сообщения, вы увидите, что есть пятая вещь, в которой вы можете быть уверены: Поиск хотя бы одного упрямого пользователя компьютера!

Ответ 13

238 Я проверил его под Win7 32 бит со следующей битой script:

set "fname="
for /l %%i in (1, 1, 27) do @call :setname
@echo %fname%
for /l %%i in (1, 1, 100) do @call :check
goto :EOF
:setname
set "fname=%fname%_123456789"
goto :EOF
:check
set "fname=%fname:~0,-1%"
@echo xx>%fname%
if not exist %fname% goto :eof
dir /b
pause
goto :EOF

Ответ 14

Я не могу создать файл с именем + period + extnesion в WS 2012 Explorer длиной более 224 символов. Не стреляйте в курьера!

В CMD того же сервера я не могу создать имя длиной более 235 символов:

Система не может найти указанный путь.

Файл с именем из 224 символов, созданный в Проводнике, не может быть открыт в Notepad++ - вместо него просто создается новый файл.