gpt4 book ai didi

C# DirectoryInfo.GetFiles 通配符搜索

转载 作者:行者123 更新时间:2023-11-30 21:54:39 25 4
gpt4 key购买 nike

我在以下代码段中遇到行为差异

DirectoryInfo di = new DirectoryInfo("c:\");
FileInfo[] textFiles = di.GetFiles("log_???.???.txt");

在哪里?是 0 或 1 个字符的通配符,因此这应该返回与模式匹配的路径中的文件:

log_..txt
log_0.0.txt
log_00.00.txt
log_000.000.txt

所有这些文件在为 Windows .NET Framework 3.5(桌面)编译时都会返回,但在目标嵌入式 Windows CE 6 和 .NET Compact Embedded Framework 3.5 上,我找不到匹配项。

如果我更改通配符模式

FileInfo[] textFiles = di.GetFiles("log_???.???.txt");

FileInfo[] textFiles = di.GetFiles("log_*.*.txt");

然后我得到了上述模式中的所有预期文件。

有人知道为什么会这样吗?这些文件肯定存在于目标平台上。

出于超出此问题范围的原因,我强烈希望至少了解为什么这不起作用。

最佳答案

我看到了几个问题。我不知道你是否故意遗漏了一些东西以使问题简单,或者你是否错过了这些东西,所以我列出了我看到的所有问题:

  1. 您没有使用逐字字符串文字。 DirectoryInfo di = new DirectoryInfo("c:\"); 无法编译,因为“\”被解释为转义字符。与逐字字符串文字相同的示例是 DirectoryInfo di = new DirectoryInfo(@"c:\"); 编译。
  2. Windows CE/Mobile 没有盘符的概念。桌面上的 DirectoryInfo di = new DirectoryInfo(@"c:\"); 等同于 CE/Mobile 上的 DirectoryInfo di = new DirectoryInfo(@"\");
  3. 您的这段引述不正确:

    ? is the wildcard for 0 or 1 characters

它实际上是1个字符的通配符,如on MSDN所述

The asterisk (*) and question mark (?) are used as wildcard characters, as they are in MS-DOS and Windows. The asterisk matches any sequence of characters, whereas the question mark matches any single character.

关于C# DirectoryInfo.GetFiles 通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32896894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com