深入了解以“.”结尾的文件夹
作者:
没见过这样的文件夹或是不知道我要说什么?看下面这张图就会知道了。
其中有六个文件夹是以 . 结尾的。你可以试着在windows模式下直接创建这样的文件夹,但是你会发现你永远无法得到以 . 结尾的文件夹。这是为什么?你可以在cmd下输入 md x..\ 来创建 x. 文件夹,而不是 x.. 文件夹,这又是为什么?我敢保证如果你能在windows模式下创建一个文件夹并且成功输入 x..\ 这些字符的话,文件夹的名字必定是 x. !不过遗憾的是windows会在你按下键盘的 \ 符号时提示“文件名不能包含下列任何字符之一:\ / : * ? " < > | ”。
在cmd下你可以输入“\ / : * ? " < > | ”任意字符而不会被终止。当你使用md命令来创建一个文件夹时,如果输入 md x.. 时,将创建出 x 文件夹而不是 x. 也不是 x.. !这和在windows下直接创建这样的文件夹是一个道理:尾部的几个 . 被过滤了!到此我们就可以知道 \ 这个符号在特殊文件夹的创建起了很重要的作用。从上面的分析我们已经知道在windows模式下命名文件夹时是是无法输入 \ 这样的特殊字符的!于是在cmd下输入 md x..\ 时,以一个点 . 结尾的文件夹就创建出来了。由此可知 \ 符号防止了那些 . 被过滤掉。然而为什么还有一个点被过滤掉了呢?UMU的文章《[Windows 文件系统]U..\ 无法正常访问的真正原因》会带来些启示。下面来看些“奇怪”的现象……
根据上面的原理,我们可以在cmd下输入 md x...\ 创建出以两个点 . 结尾的文件夹,接着三个点、四个点、五个点……看上图以 x 开头的5个空文件夹(注意是空文件夹),不论你删除哪个文件夹(而且你最多只能删除一个文件夹,这不是我要求你这样,不信你试试?)都将成功,并且在你刷新窗口时你会发现最终消失的文件夹居然是不以点结尾的文件夹 x ,而其他四个结尾带点的文件夹“安然无恙”!这是不是说明我们在任意一个文件夹上的任意操作最终都将反应到x文件夹上?这5个文件夹本质上也就是一个即文件夹 x ?下面的非空文件夹的现象会推翻这些疑问。
当你在文件夹 x(或x.)创建一个文本文件1.txt时,x.(或x)也将出现1.txt,然而在其他三个文件夹 x.. , x... , x.... 中并没有发现1.txt文件,有的人可能会说:“其实你在地址栏输入C:\x..\1.txt,或C:\x...\1.txt,或C:\x....\1.txt都将成功访问1.txt文件,这说明1.txt文件其实是存在于那三个文件夹中的!”但是我建议先看下面这张图(注意地址栏):
一个没有探究价值的问题,以上所有文件夹都是独立的。
当我们创建一个..结尾的文件夹时,只显示一个.,原因是在windows识别时过滤了一个.,当我们试图访问或操作这个目录时,windows又过滤了一个.,那么这时我们实际访问的是一个没有.的目录--一个不存在的目录,所以无法访问。
但如果我们创建一个没有.的目录在同样的父目录下,那么这个访问就有效,也就是说这个..的文件夹波及了没有.的文件夹,而实际上这不是同一个文件夹。
而当这个.增加到2个以上时,目标文件夹就会带有一个或以上.,也是不可访问的了。