如何根据 C# 文件名中的前 6 个字母获取文件的完整路径?有任何正则表达式吗?
我有一个包含 500K+ 图像的文件夹。所有图像都根据数据库列值命名。我正在查询表并根据列值在文件夹中搜索特定文件。
如果列值为 209050,则文件夹中将有一个文件,如 209050.pdf 或 209050_12345.pdf。209050 将始终存在一个图像。
请帮忙
如何根据 C# 文件名中的前 6 个字母获取文件的完整路径?有任何正则表达式吗?
我有一个包含 500K+ 图像的文件夹。所有图像都根据数据库列值命名。我正在查询表并根据列值在文件夹中搜索特定文件。
如果列值为 209050,则文件夹中将有一个文件,如 209050.pdf 或 209050_12345.pdf。209050 将始终存在一个图像。
请帮忙
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);
以下将显示以in.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();
}
}
}
这是我的目录:
这是输出:
这有帮助吗?