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

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


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

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


Это 257 символов. Если быть точным: NTFS сама устанавливает максимальную длину имени файла в несколько тысяч символов (около 30 000 с чем-то). Однако Windows устанавливает максимальную длину 260 для пути + имени файла. Папка диск + занимает не менее 3 символов, поэтому в итоге получается 257.

5


Это то, что говорит «Необработанное исключение» в платформе 4.5 при попытке сохранить файл с длинным именем:

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


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

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

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

3


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

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

1


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

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

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

1


255 символов.

http://en.wikipedia.org/ wiki/Имя файла


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

ЧТОБЫ БЫТЬ ЧЕТКО, люди считают, что это 255–260 символов, потому что это все, что поддерживает Windows Explorer. Это приведет к ошибке, если вы сделаете что-то вроде копирования файла с более длинными именами файлов. Однако программа может читать и записывать гораздо более длинные имена файлов (именно так вы добираетесь до длины, на которую в первую очередь жалуется Explorer). «Рекомендуемое исправление» Microsoft в подобных ситуациях — открыть файл в исходной программе, которая его написала, и переименовать его.

2


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

 //максимальное количество символов, которые мы поддерживаем с использованием синтаксиса "\? "// (0x7FFF + 1 для символа конца NULL) #define PATHCCH_MAX_CCH 0x8000  

1


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

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

1


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


238! Я проверил это под Win7 32 бит с помощью следующего сценария bat:

  set "fname =" for/l %% i in (1, 1, 27) do @call: setname @  echo% fname% для/l %% i в (1, 1, 100) do @call: checkgoto: EOF: setnameset "fname =% fname% _123456789" goto: EOF: checkset "fname =% fname: ~ 0, -  1% "@ echo xx>% fname%, если не существует% fname% goto: eofdir/bpausegoto: EOF  

1


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

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

«Если мы мы говорим о NTFS, а не о FAT32, «255 символов для пути + файл» — это ограничение проводника, а не файловой системы сам. NTFS поддерживает пути длиной до 32 000 символов Unicode, с каждым компонентом до 255 символов.

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

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

1


Я не могу создать файл с именем + точка + расширение в WS 2012 Explorer, длина которого превышает 224 символов. Не стреляйте в мессенджера!

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

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

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

1


Длина имени файла в Windows 7 ограничена 129 символами

Я пытаюсь правильно назвать файлы MP3, и я выбрал произвольную длину в 129 символов (а не 128?). NTFS поддерживает 255 символов в именах файлов, как это исправить?

Звездные войны — 6 — Возвращение джедая — 2 — 07 — Битва при Эндоре 2, Лея ранена , The Duel Begins, Overtaking Bunker, Dark Si.mp3


Возможно, вы превышаете 260 символов для полного имени пути, включая обратную косую черту символы.

Сколько символов в пути, включая имя файла mp3?


В Windows общая длина пути по умолчанию не должна превышать 260 символов ( drive + : + 255 символов имени файла + нулевой терминатор + возможно для финального в случае, если путь является каталогом или просто для равного округления). Это был пережиток эпохи DOS с именами 8.3, где 260-символьный путь — это действительно глубокий путь.

Возможно, ваш путь к папке был уже очень длинным, поэтому оставшаяся часть для вашего filename — всего 129. Если вам нужен более длинный путь, у вас есть несколько решений:

  • используйте полные имена файлов с \? , таким образом вы можете использовать максимум 32767 символов в пути
  • переименовать папки в пути, чтобы сделать его короче
  • смонтируйте папку, содержащую файл, в символ диска с помощью subst / mountvol /diskmgmt.msc. Таким образом, вы можете использовать максимум 255 символов для имени вашего файла.
  • создать переходную/символическую ссылку на другую более мелкую папку на пути. Вы не можете создавать ссылки на буквы дисков, следовательно, вы не можете получить имена файлов, если бы вы использовали метод монтирования.

Начиная с Windows 10, есть другой вариант, удалив MAX_PATH ограничение § . Вы можете включить его, установив HKLM SYSTEM CurrentControlSet Control FileSystem LongPathsEnabled в реестре или установив Computer Configuration> Administrative Templates> System> Filesystem> Enable NTFS long paths в групповой политике


Подробнее:

  • Почему в Windows существует ограничение на длину пути 260 символов?
  • MSDN — Именование файлов, путей и пространств имен

Максимальный путь — 32 767 символов. является приблизительным, поскольку префикс \? может быть расширен системой до более длинной строки во время выполнения, и это расширение применяется к общей длине.

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

9


Windows 7 позволит вам сохранять имена файлов длиной более 256 символов, включая имена путей, и к ним также можно легко получить доступ. Единственная небольшая трудность, с которой вы можете столкнуться, — это когда вы копируете их из одного места в другое, но вам будет представлено всплывающее окно, в котором вас спросят, хотите ли вы изменить имя файла, а не копировать файл или сохранить его как есть. Я всегда сохраняю его как есть, и у меня никогда не было проблем. У меня наверняка есть пара сотен имен файлов, превышающих лимит.

2

Оцените статью
clickpad.ru
Добавить комментарий