Directory.Existing检查带有多个斜杠的路径

时间:2018-12-18 20:47:55

标签: c#

合法路径为:@"S:\Personal Folders\UserA\test

为什么Directory.Exists在下面的路径上返回True?

@"S:\Personal Folders\UserA\\\\\\\\\\\\\\\\test

甚至更多的斜杠。

PS:我用File.Move测试过,它没有意识到这是有效路径。

1 个答案:

答案 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, ...);

没有。