2013-07-20 47 views
1
  1. 我有一個大文件夾1000個唯一命名的文件夾。更新與新文件中的文件

  2. 內每個唯一命名的文件夾,這些就是所謂的/圖像另一個文件夾。

  3. 每個圖像文件夾內有一個名爲"Read-Web-Site-Design-{UNIQUEFOLDERNAME}-ca-logo.png"

  4. 我想更換1,768 .png文件從.png文件,我提供(同時保持原來的名稱)的文件。

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

我寫了這個代碼,我能夠得到所有環路的文件和目錄,但我想知道我怎麼會在這裏更新文件,請查看我的代碼:

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)); 
    } 
} 
catch (System.Exception excpt) 
{ 
    //MessageBox.Show(excpt.Message); 
} 

return files; 
} 
+0

要使用哪種語言特點?我很奇怪你的標籤。 – Lucas

+0

@Lucas謝謝.... c#或vb.net任何人.. – sikha

回答

4

只要你有請使用File.Copy()以用您提供的新.png文件替換舊文件。

假設你將所有的文件到列表中被替換,

List<String> files = new List<String>(); 

    foreach (var file in files) 
    { 
     if (!string.IsNullOrWhiteSpace(file)) 
     { 
      File.Copy("New File Path", "file to be replaced", true); 
     } 
    } 

看,你傳遞true作爲copy()方法的第三個參數,這是overrite如果有文件已經在目標路徑中。

,或者您可以使用File.Replace()。在這裏你可以保留原始文件作爲備份。

File.Replace("New File", "File to be replaced", "Back up of Original File"); 
1

你不妨考慮下,這將處理遞歸你,只發現有「讀的Web站點」,在他們的文件路徑

foreach(var file in Directory.EnumerateFiles(dir, "*.png", SearchOption.AllDirectories) 
          .Where(x => x.Contains("Read-Web-Site"))) 
{ 
File.Copy(file, Path.Combine(new FileInfo(file).DirectoryName,"newName.png"), true); 
} 

如果它的另一個PNG文件文件要覆蓋到這個文件,而不是那麼它相同的,但

File.Copy("newFile", file, true); 

編輯

更妙

foreach(var file in Directory.EnumerateFiles(dir, 
    "Read-Web-Site*.png", 
    SearchOption.AllDirectories))