但是,我很难确定传递给代码的文件名是否有扩展名.我使用Path.HasExtension(filename)和Path.GetExtension(filename),但似乎表现出奇怪的行为:@H_301_3@
File.EXT => .EXT是扩展名.这可以.@H_301_3@
这是一个File.EXT => .EXT是扩展名.这也很好.@H_301_3@
这是一个文件.不是扩展名=> .不是扩展名是扩展名.但是,我认为这是一个没有扩展名的文件.当我创建一个具有这个名称的文件(创建一个无法识别的扩展名的文件导致Windows将其称为EXTENSIONNAME文件)时,Windows也会这样认为,而没有这样的扩展名的文件称为File).@H_301_3@
这是一个File.Not An Extension =>不扩展是扩展名.与上述相同的问题@H_301_3@
另请注意,在Path.GetFileNameWithoutExtension(filename)中,同样的行为是显而易见的(例如,它在最后两个示例中报告文件名,而不是扩展名,只是这是一个文件).@H_301_3@
所以我从这里得出的结论是,.NET和Windows的区别在于他们认为是扩展.@H_301_3@
问题:
我想知道是否可以实现如下这样的代码:@H_301_3@
if(!Path.HasExtension(filename)|| Path.GetExtension(filename).Contains(“”)){…}@H_301_3@
因为这将使我的代码的正确扩展的定义更符合Windows对待事情.还是有一些我在这里缺少的东西,明确地说我必须允许我的扩展中的空格?@H_301_3@
我搜索并找到了this slightly similar question,但是其中链接的文档仅指定不推荐使用空格/期限结束扩展 – 他们对扩展名中的空格一无所知.@H_301_3@