为什么Path.GetDirectoryName()删除目录名中的尾随点?

时间:2018-03-23 14:47:22

标签: c# .net

Path.GetDirectoryName("/folder/subfolder./file.txt");

我希望结果为\folder\subfolder.,但它是\folder\subfolder(没有点)。为什么删除尾随点?

修改:您似乎不允许在Windows中创建此类文件夹。但看看这个小提琴,似乎在.net 4.5中包含了点? https://dotnetfiddle.net/mq0OhR

3 个答案:

答案 0 :(得分:2)

参考https://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx Microsoft在命名约定部分中说明以下内容:

  

不要使用空格或句点结束文件或目录名称。虽然底层文件系统可能支持此类名称,但Windows shell和用户界面却不支持。但是,可以将句点指定为名称的第一个字符。例如," .temp"。

也许这就是点被移除的原因/原因。

答案 1 :(得分:0)

您使用的是.NET 4.6.1或更早版本吗?这已更改并在4.7及更高版本中正常工作

答案 2 :(得分:0)

在Windows中,不允许将句点(。)作为目录名的最后一个字符。

MSDN

  

不要使用空格或句点结束文件或目录名称。虽然底层文件系统可能支持此类名称,但Windows shell和用户界面却不支持。但是,可以将句点指定为名称的第一个字符。例如,“。temp”。

因此.net假定此行为并默认将其删除