DirectoryInfo.GetFiles 与通配符在 C 和 D 驱动器上的作用不同

问题描述 投票:0回答:1

我遇到了与以下链接中提到的问题类似的问题。 .NET DirectoryInfo.GetFiles 具有通配符在不同驱动器上的作用不同

在一个文件夹中,我有带有 .xls 和 .xlsx 扩展名的文件,当使用 DirectoryInfo.GetFiles("*.xls") 时,它会返回带有这两个扩展名的文件。 C 盘的文件存在此问题,但 D 盘没有问题。

当我使用 fsutil 行为查询 Disable8dot3 检查 C 和 D 驱动器的状态时,C 驱动器中的卷状态为启用,D 驱动器中的卷状态为禁用。然后我尝试使用 fsutil 8dot3name set C: 1 禁用 C 驱动器。禁用 C 驱动器时,我预计 C 驱动器不会出现该问题,但行为没有差异。

我无法确定此问题的实际根本原因。

c# directory drive getfiles
1个回答
0
投票

根据我的一些测试,我之前评论中提到的文档应该不准确,问题仍然主要是因为

GetFiles
同时匹配长文件名和8.3文件名。

然后我尝试使用 fsutil 8dot3name set C: 1 禁用 C 驱动器。禁用 C 驱动器时,我预计 C 驱动器不会出现该问题,但行为上没有差异。

当您在卷上启用 8.3 文件名时,现有的长文件名将不会自动获取其短名称。反之亦然,禁用该选项后,现有短名称不会自动消失。您可以使用

DIR /X
命令来验证它。

根据这个问题和我的测试,只有文件系统上新创建的文件才会受到8dot3name选项的影响。

© www.soinside.com 2019 - 2024. All rights reserved.