Почему можно создать файл без имени, т.е. .htaccess, используя notepad++, но при использовании проводника Windows требуется имя файла?
2 ответа
Это как-то связано с тем, как Microsoft позволяет Explorer.exe
работать с сохранением файлов без указания имени файла и только с указанием расширения файла.
Похоже, что в некоторых приложениях, таких как Notepad и Notepad++, это ограничение не запрограммировано в их логике, и они позволяют сохранять файлы только с расширением - так что это функция или функция безопасности Windows Explorer, которая предписывает, чтобы это не происходило по умолчанию при уровень программы.
Временное решение
Обходной путь - добавить дополнительную точку в конце расширения, и Windows Explorer позволит сохранить его, но он проанализирует конечную точку и сохранит ее без имени файла и без дополнительной точки в конце.
Поэтому, когда вы создаете его с помощью проводника Windows, как .htaccess.
это не выдаст ниже сообщение об ошибке, и позволит вам сохранить его просто отлично.
Технически файл типа .htaccess
имеет имя .htaccess
и не имеет расширения. Это следует из официальной документации «Имена файлов, путей и пространств имен» по адресу https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx.
Имена файлов и каталогов
Все файловые системы следуют одним и тем же общим правилам именования для отдельного файла: базовое имя файла и необязательное расширение, разделенные точкой.
Обратите внимание, что всегда есть имя, но необязательно только расширение. Таким образом, если полное имя файла начинается с точки и не имеет других точек, то это имя и расширение отсутствует . Язык спецификации не оставляет места для существующего имени файла, которое имеет расширение, но не имеет имени.
Это можно проверить, создав пару файлов с именами .htaccess
и .htaccess.bak
в другом пустом каталоге, а затем запустив следующую команду в командной строке.
C:\etc>dir /a-d /b *.*
.htaccess
.htaccess.bak
C:\etc>dir /a-d /b *.
.htaccess
Первый dir
перечисляет оба файла, как и ожидалось, второй (где *.
Соответствует файлам без расширения) перечисляет только .htaccess
.
Что касается Explorer, он, похоже, игнорирует спецификацию и следует своим собственным правилам. Файл, такой как .htaccess
, отображается как с именем = .htaccess
и с типом = HTACCESS file
если расширение не зарегистрировано. Если имя соответствует известному расширению, то имя остается пустым, и считается, что расширение соответствует, например, файл .cmd
отображается с командным сценарием type = Windows Command Script
и без имени (при использовании скрытых расширений по умолчанию для известных типов файлов ). установка).
Поскольку отображение пустого имени выглядит плохо, Explorer, должно быть, решил полностью заблокировать такие имена от самостоятельного создания. Это многое происходит из http://blogs.msdn.com/b/oldnewthing/archive/2008/04/14/8389268.aspx.