Когда я пытаюсь сохранить файл, если я использую специальные символы в имени (например, двоеточие, вопросительный знак или восклицательный знак) в Windows, я получаю сообщение о том, что имя файла неверно.
Это почему?
Когда я пытаюсь сохранить файл, если я использую специальные символы в имени (например, двоеточие, вопросительный знак или восклицательный знак) в Windows, я получаю сообщение о том, что имя файла неверно.
Это почему?
Ответы:
Есть несколько символов, которые имеют особое значение для Windows (и для DOS, откуда изначально взято большинство символов)
из MSDN :
Имя файла не может содержать следующие символы:
\ /: *? "<> |
/
это переключатель (а также разделитель каталогов).
\
является разделителем каталогов.
:
обозначение привода
*
и ?
подстановочные знаки, используемые при поиске.
"
способ разрешить пробелы в параметрах.
<
и >
перенаправление, которые позволяют вводу и выводу программы поступать и переходить к чему-либо, кроме экрана / клавиатуры.
|
это канал, который позволяет использовать выходные данные одной программы в качестве входных данных для следующей.
\
?
*
и "
являются единственными, которые действительно необходимы в текущем синтаксисе, поскольку другие символы полезны только за пределами кавычек. Исключением является: который полезен только в качестве второго символа, который может быть объявлен вне закона, разрешив его в другом месте. Другими словами, нет имени файла A:A letter's story.txt
, но нет проблемы с именем файлаSarah: My favorite cat.txt
<>"
зарезервированные символы подстановки. Windows использует их для реализации сложной семантики для DOS *?.
при переводе на нативный NT, который имеет простую семантику для *?.
. Шесть символов подстановки зарезервированы, потому что Windows реализует сопоставление с подстановочными знаками в самой файловой системе, то есть непосредственно в NtQueryDirectoryFile
системном вызове, без механизма экранирования. В Unix подстановочные знаки реализуются на уровне приложений, обычно с помощью оболочки, которая поддерживает их экранирование.
:
обычно это зарезервировано в именах файлов, но не в путях к файлам. Он используется для имен устройств и в качестве разделителя для потоков файлов (например, «имя файла: имя потока: тип потока»). Кроме того , некоторые файловые системы , такие как VirtualBox разделяемой папки файловой системы позволяют :
, |
и управляющие символы ASCII (1-31) в именах файлов, но они защищены во всех файловых системах Microsoft, для файловой системы с именем трубы , за исключением.