搜索fileName并根据C#中的模式获取完整路径

时间:2012-07-09 12:51:34

标签: c#-4.0

如何根据C#中文件名中的前6个字母获取文件的完整路径?这有什么正则表达式吗?

我有一个500K +图像的文件夹。 所有图像都按照数据库列值命名。 我正在查询表格,根据列值我必须在文件夹中搜索特定文件。

如果列值为209050,则文件夹中将有一个文件,如209050.pdf或209050_12345.pdf。 209050将始终有一个图像。

请帮忙

2 个答案:

答案 0 :(得分:1)

var files = Directory.EnumerateFiles(@"C:\MyRootDir", "209050*", SearchOption.AllDirectories);

这将返回一个可枚举的字符串。每个字符串将是文件的完整路径,其名称与指定的模式匹配,在本例中为名称以“209050”开头的任何文件,与扩展名无关。这甚至可以在文件夹MyRootDir的子目录中搜索。

如果您只想过滤jpg个文件,请相应更改第二个参数。

var files = Directory.EnumerateFiles(@"C:\MyRootDir", "209050*.jpg", SearchOption.AllDirectories);

如果您不使用.Net Framework 4或4.5,则可以使用GetFiles方法。

var files = Directory.GetFiles(@"C:\MyRootDir", "209050*.jpg", SearchOption.AllDirectories);

答案 1 :(得分:0)

以下内容将向您展示.jpg中以209050开头的所有C:\MyDirectory个文件:

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] myFiles = Directory.GetFiles(@"C:\MyDirectory");

            foreach (var x in myFiles)
            {
                string[] splitName = x.Split('\\');
                string fileName = splitName[splitName.Length - 1];

                if (fileName.StartsWith("209050") && fileName.EndsWith(".jpg"))
                {
                    Console.WriteLine(x);
                }
            }

            Console.ReadLine();
        }
    }
}

这是我的目录:

My Directory

这是输出:

Output

这有帮助吗?