4

В Linux у меня может быть папка с именем temp. ,

Если я попытаюсь сделать mkdir temp. на компьютере с Windows период завершения сокращается.

Если я попытаюсь синхронизировать каталог из Linux в Windows, у которого есть конечный период, он потерпит неудачу (найден коллегой в seafile ).

Это почему?

1 ответ1

8

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. стать разными именами файлов. Вероятно, пришлось лишить конечный период, чтобы избежать нарушения таких программ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .