NTFS это не запрещает, это только API Win32. Как отметил Алекс в комментарии, если вы используете \\?\...
чтобы пропустить обычный синтаксический анализ и указать необработанный путь к NT API, вы можете создать каталог с завершающим периодом.
(Почему это работает? В статье Win32 File Namespaces говорится: «Для файлового ввода / вывода,« \?\"Префикс к строке пути указывает API-интерфейсам Windows отключить анализ всей строки и отправить строку, следующую за ней, прямо в файловую систему. Например, если файловая система поддерживает большие пути и имена файлов, вы можете превысить ограничения MAX_PATH, которые в противном случае применяются API-интерфейсами Windows. ")
Что касается того, почему конечный период сокращен, официальной документации, похоже, не существует, но может потребоваться совместимость со старыми программами MS-DOS или Windows 3.11. В мире имен файлов 8.3 пустое расширение и полное отсутствие вообще было одним и тем же - в обоих случаях имя файла XYZ
сохранялось бы как XYZ·····
а расширение как ···
(точки, представляющие нулевые байты), так что, возможно, были программы, которые опирались на этот факт. Когда Windows 95 получила поддержку длинных имен файлов, она начала хранить имя и расширение как одну строку, вызывая xyz
и xyz.
стать разными именами файлов. Вероятно, пришлось лишить конечный период, чтобы избежать нарушения таких программ.