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


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

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

3 13

3 ответа:

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

однако можно обойти правила Win32 и создать пути длиной до 32 КБ символов. в основном вам нужно использовать "\\?\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, . (точка), $Bitmap, $Boot, $BadClus, $Secure, $Upcase и $Extend;[3]. (точка и $Extend - это оба каталога; другие-файлы. пределы ядра NT полные пути к коду 32 767 UTF-16 слова.

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

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