如何根據C#中文件名中的前6個字母獲取文件的完整路徑?有沒有任何正則表達式?搜索文件名並根據C#中的模式獲取完整路徑
我有一個包含500K +圖片的文件夾。 所有圖像都按照數據庫列值命名。 我正在查詢表,並根據列值我必須搜索該文件夾的特定文件。
如果列值爲209050,那麼文件夾中將有一個文件,如209050.pdf或209050_12345.pdf。總是會有一個圖像209050.
請幫
如何根據C#中文件名中的前6個字母獲取文件的完整路徑?有沒有任何正則表達式?搜索文件名並根據C#中的模式獲取完整路徑
我有一個包含500K +圖片的文件夾。 所有圖像都按照數據庫列值命名。 我正在查詢表,並根據列值我必須搜索該文件夾的特定文件。
如果列值爲209050,那麼文件夾中將有一個文件,如209050.pdf或209050_12345.pdf。總是會有一個圖像209050.
請幫
下面會告訴你所有.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();
}
}
}
這裏是我的目錄:
以下是輸出:
這是否對您有幫助?
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);
EnumerateFiles肯定比GetFiles更整齊! +1 – JMK 2012-07-09 13:36:48