为什么使用 notepad++ 可以创建一个没有名称的文件,即 .htaccess,但使用 Windows 资源管理器时却需要文件名?
答案1
Explorer.exe
这与 Microsoft 允许保存没有文件名且仅指定文件扩展名的文件的方式有关。
看起来某些应用程序(例如 Notepad 和 Notepad++)在其逻辑中没有编入这个限制,并且它们确实允许仅使用扩展名保存文件 - 因此这是 Windows 资源管理器的安全特性或功能,可强制在程序级别默认不发生这种情况。
解决方法
一种解决方法是在扩展名末尾添加一个额外的点,这样 Windows 资源管理器将允许保存它,但它会解析尾随的点并在没有文件名和末尾没有额外点的情况下保存它。
因此,当您使用 Windows 资源管理器创建它时,.htaccess.
它不会出现以下错误消息,并且允许您正常保存它。
答案2
从技术上讲,像这样的文件的.htaccess
名称为.htaccess
,没有扩展名。这来自“命名文件、路径和命名空间”的官方文档,网址为https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx。
文件和目录名称
所有文件系统都遵循相同的单个文件的一般命名约定:基本文件名和可选扩展名,以句点分隔。
请注意总是名称,可选的只有扩展名。因此,如果完整的文件名以点开头,并且其中没有其他点,那么这就是姓名还有不扩展名。规范的语言不允许存在有扩展名但没有名称的文件名。
可以通过在一个空目录中创建几个名为.htaccess
和的文件.htaccess.bak
,然后在 cmd 提示符下运行以下命令来验证这一点。
C:\etc>dir /a-d /b *.*
.htaccess
.htaccess.bak
C:\etc>dir /a-d /b *.
.htaccess
第一个文件dir
按预期列出了两个文件,第二个文件(其中*.
匹配的文件不扩展名).htaccess
仅列出。
至于 Explorer,它似乎忽略了规范并遵循自己的规则。.htaccess
显示的文件如下,其中同时包含名称 =.htaccess
和type =HTACCESS file
只要扩展未注册。如果名称与已知扩展名,则名称留空,并且扩展名被视为匹配,例如,.cmd
显示文件类型 =Windows Command Script
且没有名称(当使用默认的 '隐藏已知文件类型的扩展名' 环境)。
由于显示空白名称看起来很糟糕,因此 Explorer 必须决定直接阻止此类名称自行创建。http://blogs.msdn.com/b/oldnewthing/archive/2008/04/14/8389268.aspx。