某些方法中的任何字符串File.Exist()

时间:2011-05-04 13:57:44

标签: c# regex

如何在File.Exist方法中添加一些包含一些数字的文件名?例如“file1.abc”,“file2.abc”,“file3.abc”等,而不使用正则表达式?

5 个答案:

答案 0 :(得分:4)

您是否尝试确定各种文件是否符合fileN.abc哪个N是任何数字?因为File.Exists无法做到这一点。请改用Directory.EnumerateFiles来获取与特定模式匹配的文件列表。

答案 1 :(得分:1)

你的意思是

for (int i = 1; i < 4; i++)
{
    string fileName = "file" + i.ToString() + ".abc";
    if (File.Exists(fileName))
    {
        // ...
    }
}

答案 2 :(得分:0)

new DirectoryInfo(dir).EnumerateFiles("file*.abc").Any();

Directory.EnumerateFiles(dir, "file*.abc").Any();

答案 3 :(得分:0)

在unix世界中,它被称为 globbing 。也许你可以找到一个.NET库?作为起点,请查看此帖子:glob pattern matching in .NET

答案 4 :(得分:-2)

下面是代码快照,它将返回名称前缀为“file”的所有文件,其格式看起来像“fileN.abc”,即使它不会返回文件名“file.abc”或“fileX.abc”等

List<string> str = 
    Directory.EnumerateFiles(Server.MapPath("~/"), "file*.abc")
      .Where((file => (!string.IsNullOrWhiteSpace( 
             Path.GetFileNameWithoutExtension(file).Substring( 
             Path.GetFileNameWithoutExtension(file).IndexOf(
              "file") + "file".Length))) 
            &&  
            (int.TryParse(Path.GetFileNameWithoutExtension(file).Substring( 
                Path.GetFileNameWithoutExtension(file).IndexOf("file") + "file".Length), 
                out result) == true))).ToList();

希望这对你的时间非常有帮助。