我写了一些代码来用 C++ 创建一个名为“E:\hkhkhkhk\....”的目录。它实际上迭代地创建了“....”。并且父目录“hkhkhkhk”无法删除。
我想知道系统如何解释“....”。
代码如下,在虚拟机中执行。
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
if (!CreateDirectoryA("E:\\hkhkhkhk\\....\\", NULL))
cout << GetLastError() << endl;
getchar();
return 0;
}
乔什
答案1
Windows 不允许程序使用以点结尾的路径;每当程序尝试访问这样的路径时,所有的点都会被悄悄地从末尾删除。
由于您的路径实际上以反斜杠结尾,因此您在创建目录时绕过了此限制,但其他程序(例如 Windows 资源管理器)不会这样做。
因此,当您在资源管理器中双击该目录时,它会尝试更改为E:\hkhkhkhk\....
但实际上会E:\hkhkhkhk\
(与父目录相同),从而创建错觉无限递归,而实际上你根本就不会去任何地方。