2012-07-09 242 views
0

如何根據C#中文件名中的前6個字母獲取文件的完整路徑?有沒有任何正則表達式?搜索文件名並根據C#中的模式獲取完整路徑

我有一個包含500K +圖片的文件夾。 所有圖像都按照數據庫列值命名。 我正在查詢表,並根據列值我必須搜索該文件夾的特定文件。

如果列值爲209050,那麼文件夾中將有一個文件,如209050.pdf或209050_12345.pdf。總是會有一個圖像209050.

請幫

回答

0

下面會告訴你所有.jpg開頭的文件209050C:\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

這是否對您有幫助?

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); 
+0

EnumerateFiles肯定比GetFiles更整齊! +1 – JMK 2012-07-09 13:36:48

相關問題