2013-07-21 10 views
0
  1. 我有800-1000在一個大文件夾中有唯一命名的文件夾。需要更新c中的圖像文件#

  2. 每個唯一命名的文件夾內部是另一個名爲/ images的文件夾。

  3. 而且每個圖像文件夾內的一個名爲「搖滾明星 - 站點 - 設計 - {} UNIQUEFOLDERNAME -ca-logo.png」

  4. 我寫的替換所有.png文件代碼(同時保留原來的名稱)從我提供的.png文件中。

文件夾結構和文件名需要保持不變。基本上我用一個新文件更新舊文件,使用相同(唯一)名稱,800-1000次。

代碼我試圖正常工作,但有一個錯誤。圖像文件夾內有很多圖像,但我只需要更新「搖滾明星網站設計{UNIQUEFOLDERNAME} -ca-logo.png 「檔案每個文件夾。

有什麼辦法可以讓file.startwith(「Rock-Star」)。所以我可以更新特定的文件我想要的。

這裏是我的代碼:

private List<String> DirSearch(string sDir) 
{ 
    List<String> files = new List<String>(); 
    try 
    { 
     foreach (string f in Directory.GetFiles(sDir)) 
     { 
      files.Add(f); 



     } 
     foreach (string d in Directory.GetDirectories(sDir)) 
     { 
      files.AddRange(DirSearch(d)); 
     } 


     foreach (var file in files) 
     { 
      if (!string.IsNullOrWhiteSpace(file)) 
      { 
       File.Copy(Server.MapPath("ca-logo.jpg"), file,true); 

      } 
     } 


    } 
    catch (System.Exception excpt) 
    { 
     //MessageBox.Show(excpt.Message); 
    } 

    return files; 
} 

回答

0

首先使用Path.GetFileName()從文件完整路徑中獲取文件名。然後使用StartsWith()。當您將文件添加到列表中時,請檢查文件名是否以您想要的名稱開頭,然後添加到列表中。

List<String> files = new List<String>(); 
foreach (string f in Directory.GetFiles("")) 
{ 
    //Get file name from full file path 
    string fileName = Path.GetFileName(f); 

    //Get only the files starts with Rock-Star 
    if (fileName.StartsWith("Rock-Star")) 
     { 
      files.Add(f); 
     } 

} 

編輯

如果你想用大寫和小寫更新文件,然後lettes你必須StringComparison.OrdinalIgnoreCase枚舉傳遞給你的StartsWith()方法

//Get only the files starts with Rock-Star or rock-start 
    if (fileName.StartsWith("Rock-Star",StringComparison.OrdinalIgnoreCase)) 
     { 
     files.Add(f); 
     } 

編輯

要獲取文件ll子目錄並替換,將SearchOption.AllDirectories傳遞給GetFiles()方法。下面的代碼將搜索所有的文件的子目錄與.png擴展

foreach (string f in Directory.GetFiles(sDir, "*.png", SearchOption.AllDirectories)) 
+0

我有2張相似圖片搖滾明星和搖滾明星......但我想更新搖滾明星....所以我應該怎麼必須做區分大小寫。 – sikha

+0

相同的代碼應該可以工作,上面的代碼只會更新大寫名稱爲「Rock - Start」的文件。它不會取代「搖滾明星」 – Kurubaran

+0

查看更新的代碼。希望能幫助到你。 – Kurubaran

4

您可以使用此基於正則表達式

Directory.GetFiles(sDir, "Rock-Star*.png"); 

搖滾明星*巴紐獲得的文件是指文件開始搖滾明星,*表示任何字符或字符序列,以.png結尾