2012-12-12 48 views
0

我一直在爲此奮鬥了幾天,現在無法弄清楚。從c#中最新的子目錄複製文件

我需要從最後創建子目錄目錄中的文件複製,子目錄有幾個子目錄以及導航之前,我的文件,這是哪裏出了問題的用武之地。

我希望我明確地說明,我會舉例說明下面的目錄,在此先感謝您的幫助。

C:\ProgramFiles\BuildOutput\mmh\LongTerm\**49**\release\MarketMessageHandler\Service\ 

數以粗體強調的是,我需要找到一個最新的子目錄,並在服務文件夾是我需要將文件從...

這裏是我的代碼嘗試

string sourceDir = @「\ sttbedbsd001 \ BuildOutput \ mmh \ LongTerm \ 51 \ release \ MarketMessageHandler \ Service」; string target = @「C:\ Users \ gwessels \ Desktop \ test \」; (f.e應用程序設置)

  string[] sDirFiles = Directory.GetFiles(sourceDir, "*", SearchOption.TopDirectoryOnly); 

      string targetDir; 

      if (sDirFiles.Length > 0) 
      { 
       foreach (string file in sDirFiles) 
       { 
        string[] splitFile = file.Split('\\'); 
        string copyFile = Path.GetFileName(file); 
        string source = sourceDir + "\\" + copyFile; 

        targetDir = target + copyFile; 

        try 
        { 
         if (File.Exists(targetDir)) 
         { 
          File.Delete(targetDir); 
          File.Copy(source, targetDir); 
         } 

         else 
         { 
          File.Copy(source, targetDir); 
         } 
        } 
        catch (Exception e) 
        { 
         Console.WriteLine(e); 
        } 
       } 
      } 
+0

定義「最新的一個」 - 你的意思是最高的數字?或最新的創建日期? – Oded

+0

什麼是您使用的根目錄?它是一個靜態目錄,你已經存儲在某個地方,或者你如何確定它? –

+0

該目錄存儲在一個本地服務器上,最新的一個我的意思是每次有一個新的建立一個新的文件夾將被創建與所有相同的子目錄49 50 51 etc – Goodstuff

回答

0

假設因爲它被存儲在某處的LongTerm目錄是已知的:

string longTermDirectory = Properties.Settings.Default.LongTermDirectory; 
DirectoryInfo dir = new DirectoryInfo(longTermDirectory); 
dir.Create(); // does nothing if it already exists 
int Number = int.MinValue; 
DirectoryInfo latestFolder = dir.EnumerateDirectories("*.*", SearchOption.AllDirectories) 
    .Where(d => int.TryParse(d.Name, out Number)) 
    .Select(Directory => new { Directory, Number }) 
    .OrderByDescending(x => x.Number) 
    .Select(x => x.Directory) 
    .First(); 

Directory.EnumerateDirectoriesSearchOption.AllDirectories枚舉所有目錄遞歸。 Enumerable.OrderByDescending,目錄名稱的編號將按數字順序排列,最高優先(在99之前的49和100之前爲50)。

+0

謝謝蒂姆,將嘗試。 – Goodstuff

相關問題