Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET DirectoryInfo.GetFiles在不同的驱动器上具有不同的通配符_C#_.net_Windows_Winapi_Ntfs - Fatal编程技术网

C# .NET DirectoryInfo.GetFiles在不同的驱动器上具有不同的通配符

C# .NET DirectoryInfo.GetFiles在不同的驱动器上具有不同的通配符,c#,.net,windows,winapi,ntfs,C#,.net,Windows,Winapi,Ntfs,我在DirectoryInfo.GetFiles(“*.xls”)中遇到了一个非常奇怪的错误 我在驱动器C上有一个目录zzz,它包含两个文件:File1.xls和File2.xlsx 当我调用GetFiles(“*.xls”)时,它将返回文档中所述的2个文件: 它们有完全相同的通配符示例。我也读过关于这种向后兼容的“智能解决方案”,它可以使3个字母的扩展行为与其他扩展不同 但是,当我为驱动器D上的同一文件夹(包含所有文件的副本)调用它时,它返回1个文件!我不明白为什么 C和D都被格式化为NTF

我在DirectoryInfo.GetFiles(“*.xls”)中遇到了一个非常奇怪的错误

我在驱动器C上有一个目录zzz,它包含两个文件:File1.xls和File2.xlsx

当我调用GetFiles(“*.xls”)时,它将返回文档中所述的2个文件:

它们有完全相同的通配符示例。我也读过关于这种向后兼容的“智能解决方案”,它可以使3个字母的扩展行为与其他扩展不同

但是,当我为驱动器D上的同一文件夹(包含所有文件的副本)调用它时,它返回1个文件!我不明白为什么

C和D都被格式化为NTFS。驱动器D是笔记本电脑供应商在同一硬盘上创建的恢复驱动器(也被格式化为NTFS)。我能看到的唯一区别是D不是主逻辑驱动器

当我在FAT32格式的闪存驱动器和NTFS格式的外部硬盘驱动器上尝试相同操作时,它返回2个文件

其他人能复制这个吗?我做了一个有帮助的变通方法(使用GetFiles()然后按扩展名过滤),但如果这是一个.net错误、Windows错误或其他错误,这很有趣


我在Windows 10 x64和.net 4.5.2上尝试了此操作。

您是否检查了文件权限和属性(例如“隐藏”)?他们忽略了告诉您的是,可以在NTFS驱动器上禁用8.3文件名创建—对于除系统驱动器以外的所有驱动器或每个卷(默认)。我假设它使用默认的每卷设置,并且您的恢复驱动器已禁用此设置。您可以通过
fsutil行为查询禁用8dot3 D:
进行检查。是的,您是对的!它为C启用,为D禁用!Microsoft一如既往地使用拐杖…您是否检查了文件权限和属性(例如“隐藏”)?他们忽略了告诉您的是,可以在NTFS驱动器上禁用8.3文件名创建--对于除系统驱动器以外的所有驱动器,或每个卷(默认设置)。我假设它使用默认的每卷设置,并且您的恢复驱动器已禁用此设置。您可以通过
fsutil行为查询禁用8dot3 D:
进行检查。是的,您是对的!它为C启用,为D禁用!微软的拐杖一如既往。。。