C# 为什么Path.GetDirectoryName()会删除目录名中的尾随点?
我希望结果是C# 为什么Path.GetDirectoryName()会删除目录名中的尾随点?,c#,.net,C#,.net,我希望结果是\folder\subfolder.,但它是\folder\subfolder(没有点)。为什么要删除尾随点 编辑:似乎不允许您在Windows中创建这样的文件夹。但看看这把小提琴,它似乎在.NET4.5中包含了圆点 您使用的是.NET 4.6.1还是更早版本?这在4.7及更高版本中已更改并正常工作您使用的是.NET 4.6.1还是更早版本?在4.7及更高版本中,这一点已被更改并正常工作。Microsoft在命名约定部分中指出: 不要以空格或句点结束文件或目录名。尽管底层文件系统可能
\folder\subfolder.
,但它是\folder\subfolder
(没有点)。为什么要删除尾随点
编辑:似乎不允许您在Windows中创建这样的文件夹。但看看这把小提琴,它似乎在.NET4.5中包含了圆点 您使用的是.NET 4.6.1还是更早版本?这在4.7及更高版本中已更改并正常工作您使用的是.NET 4.6.1还是更早版本?在4.7及更高版本中,这一点已被更改并正常工作。Microsoft在命名约定部分中指出: 不要以空格或句点结束文件或目录名。尽管底层文件系统可能支持此类名称,但Windows shell和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp” 可能这就是圆点被删除的原因。提到Microsoft时,在命名约定部分说了以下几点: 不要以空格或句点结束文件或目录名。尽管底层文件系统可能支持此类名称,但Windows shell和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”
可能这就是删除点的原因。在windows中,不允许将句点(.)作为目录名的最后一个字符 MSDN说 不要以空格或句点结束文件或目录名。尽管底层文件系统可能支持此类名称,但Windows shell和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”
因此.net假定此行为并默认删除它。在windows中,不允许将句点(.)作为目录名的最后一个字符 MSDN说 不要以空格或句点结束文件或目录名。尽管底层文件系统可能支持此类名称,但Windows shell和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”
由于MS-DOS和扩展,因此.net假定此行为并在默认情况下删除它。以前甚至不可能有这样的目录名,默认情况下,在Windows上,仍然不可能用传统方法创建这样的目录。因为MS-DOS和扩展。以前甚至不可能有这样的目录名,默认情况下,在Windows上,仍然不可能用常规方法创建这样的目录。@ClaudiuConstantin不,你不能,只是确认了一下,它会自动删除尾随的点,我第一次错了,我觉得它起作用了,但这似乎不相关:@ClaudiuConstantin不,你不能,刚刚确认,它自动删除了尾随点,我第一次错了,我觉得它有效,但这似乎不相关:
Path.GetDirectoryName("/folder/subfolder./file.txt");