Могут ли пространства существовать в расширении файла?

В настоящее время я работаю с некоторым кодом, включающим сохранение файла в файл, определенный пользователем. Если пользователь передает имя файла без расширения, код автоматически определяет расширение на основе типа файла (хранящегося внутри).

Однако мне трудно определить, имеет ли имя файла, переданное в код, расширение или нет. I Я использую Path.HasExtension (filename) и Path.GetExtension (filename) , но, похоже, демонстрирует странное поведение:

File.EXT => .EXT - это расширение. Это нормально.

Это файл.EXT => .EXT - это расширение. Это тоже нормально.

Это Файл. Не расширение => . Не расширение - это расширение. Однако я бы подумал об этом как о файле без расширения.Windows тоже так думает, когда я создаю файл с этим именем (создание файла с нераспознанным расширением заставляет окна называть его EXTENSIONNAME File , тогда как файлы без такого расширения, как это, просто называются Файл ).

Это файл. Не расширение => . Не расширение - это расширение. Та же проблема, что и выше.

Также обратите внимание, что такое же поведение очевидно в Path.GetFileNameWithoutExtension (filename) (например, в двух последних примерах указано, что имя файла без расширения будет просто This Is A File ).

Итак, я понимаю, что .NET и Windows отличаются тем, что они считают расширением.


Вопрос: Мне интересно, можно ли мне реализовать такой код:

if (! Path.HasExtension (filename) || Path.GetExtension (filename) .Contains ("")) {...}

, поскольку это приведет к тому, что определение правильного расширения в моем коде будет больше соответствовать тому, как Windows обрабатывает вещи. Или мне здесь не хватает чего-то, что явно говорит о том, что я должен разрешить пробелы в своих расширениях?

Я искал и нашел этот немного похожий вопрос , но связанные документы в нем только укажите, что не рекомендуется заканчивать расширение пробелом / точкой - они ничего не говорят о пробелах внутри расширения.

10
задан Community 23 May 2017 в 12:22
поделиться