Существуют ли какие-либо ограничения на длину пути к файлу в NTFS?

StackOverflow https://stackoverflow.com/questions/1857335

  •  13-09-2019
  •  | 
  •  

Вопрос

Почему я не могу создать глубокий путь, количество символов в пути которого превышает 255 в файловой системе NTFS?Вроде ограничения FAT32, но и в NTFS существуют?Кто-нибудь может предоставить какие-нибудь документы?

Большое спасибо!

Это было полезно?

Решение

Ограничение в 260 символов — это ограничение не файловой системы, а ограничения Win32 API.Win32 определяет MAX_PATH как 260, и это то, что API использует для проверки длины пути, передаваемого в такие функции, как FileCreate, FileOpen и т. д.(которые используются .NET в BCL).

Однако вы можете обойти правила Win32 и создать пути длиной до 32 000 символов. По сути, вам нужно использовать синтаксис «\\?\C:\MyReallyLongPath\File.txt», который вы, возможно, раньше не видели.Последний раз, когда я проверял, классы File и FileInfo в .NET не позволяют использовать этот тип пути, но вы определенно можете сделать это из C/C++.Вот ссылка для получения дополнительной информации.

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Другие советы

Цитата из Википедии

Имена файлов ограничены 255 кодовыми словами UTF-16.Определенные имена зарезервированы в каталоге корневых объемов и не могут использоваться для файлов.Это:$ Mft, $ mftmirr, $ logfile, $ volume, $ attrdef ,.(DOT), $ BITMAP, $ BOOT, $ BADCLUS, $ Secure, $ Upcase и $ Extend; [3].(DOT) и $ Extend являются каталогами;Остальные являются файлами. Ядро NT ограничивает полный путь до 32 767 кодовых слов UTF-16.

http://en.wikipedia.org/wiki/NTFS

Док.Вы, безусловно, сможете создавать пути к файлам длиной более 255 байт, если каждый отдельный компонент пути находится под ним.Однако для достижения такого поведения вы должны использовать версии вызовов доступа к файлам в формате Unicode (W);если вы используете байтовые интерфейсы ANSI (A), такие как те, которые используются stdio, вы столкнетесь с ограничениями старого интерфейса пути до Unicode.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top