2014-10-10 42 views
-3

初學者在這裏。我試圖將所有內容從一個文件夾複製到另一個文件夾。 比方說,初始文件夾名爲inputDir,而我正在將文件複製到的文件夾被稱爲outputDir。問題是,outputDir已經包含一些文件,並且它們都被命名爲inputDir中的文件。這一切看起來很喜歡這樣的:複製一個目錄的所有內容,並更改現有內容的名稱

- inputDir 
* hit0.png 
* hit100.png 
* hit300.png 

- outputDir 
* hit0.png 
* hit100.png 
* hit300.png 

我想要做的是首先的所有文件重命名內部outputDir,使它們都包含字符「李明博」在他們剛剛結束之前他們的名字然後將其所有文件從inputDir複製到outputDir。總之,我希望它看起來像這樣:

- inputDir 
* hit0.png 
* hit100.png 
* hit300.png 

- outputDir 
* hit0.png 
* hit0bak.png 
* hit100.png 
* hit100bak.png 
* hit300.png 
* hit300bak.png 

到目前爲止,我已經試過單獨做它的每一個文件,並能正常工作;然而,爲20個以上的文件編寫相同的代碼是很多單調的工作,所以我很想知道是否有更快的方式在C#中完成它(是的,我需要它在C#中完成,因爲程序比我在這裏寫下的內容要多,但我已經涵蓋了其他所有內容)。 非常感謝您的幫助。

這是我到目前爲止已經試過:

if (File.Exists(outputDir + "\\" + "hit0.png")) 
       {      
        File.Move(outputDir + "\\" + "hit0.png", outputDir + "\\" + "hit0bak.png"); 
        File.Move(outputDir + "\\" + "hit100.png", outputDir + "\\" + "hit100bak.png"); 
        File.Move(outputDir + "\\" + "hit300.png", outputDir + "\\" + "hit300bak.png"); 
       } 
      File.Copy(inputDir + "\\" + "hit0.png", outputDir + "\\" + "hit0.png"); 
      File.Copy(inputDir + "\\" + "hit100.png", outputDir + "\\" + "hit100.png"); 
      File.Copy(inputDir + "\\" + "hit300.png", outputDir + "\\" + "hit100.png"); 
+0

這是你的任務的描述。你的問題是什麼?你能證明你試圖解決這個問題嗎? – xxbbcc 2014-10-10 15:39:16

回答

0
 var sourcePath = @"c:\source\path"; 
     var destPath = @"c:\dest\path"; 

     var sourceDirInfo = new System.IO.DirectoryInfo(sourcePath); 

     foreach (var sourceFileInfo in sourceDirInfo.GetFiles()) 
     { 
      if (File.Exists(Path.Combine(destPath, sourceFileInfo.Name))) 
      { 
       var bakName = sourceFileInfo.Name.Replace(".", "bak."); 

       File.Move(Path.Combine(destPath, sourceFileInfo.Name), 
        Path.Combine(destPath, bakName)); 
      } 

      File.Copy(Path.Combine(sourcePath, sourceFileInfo.Name), 
       Path.Combine(destPath, sourceFileInfo.Name)); 
     } 

(警告 - 僅在他們適用於將一個文件名「」)

+0

這幾乎解決了我想要的一切。非常感謝你。 – Nanashi 2014-10-10 17:19:20

相關問題