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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

Имена файлов ограничены 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

Ответ 3

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