合法路径为:@"S:\Personal Folders\UserA\test
为什么Directory.Exists
在下面的路径上返回True?
@"S:\Personal Folders\UserA\\\\\\\\\\\\\\\\test
甚至更多的斜杠。
PS:我用File.Move
测试过,它没有意识到这是有效路径。
答案 0 :(得分:1)
带斜杠的路径仍满足绝对路径标准。
根据the Docs,
允许path参数指定相对或绝对路径信息。
修改:Reference for Path Normalization
几乎所有传递给Windows API的路径都已标准化。中 标准化,Windows执行以下步骤:
- 标识路径。
- 将当前目录应用于部分限定的(相对)路径。
- 规范化组件和目录分隔符。
- 评估相对目录组件(。用于当前目录,..用于父目录)。
- 修剪某些字符。
此规范化隐式发生,但是您可以通过以下方式显式地进行 调用Path.GetFullPath方法,该方法包装了对 GetFullPathName()函数。您也可以调用Windows GetFullPathName()函数直接使用P / Invoke。
修改
并非每个函数默认都会标准化路径。
File.Move
我自己给出了此路径的错误。
另一方面,
var parsedPath = Path.GetFullPath("S:\\Personal Folders\\UserA\\\\\\\\\\\\\\\\test");
File.Move(parsedPath, ...);
没有。