2012-11-05 77 views
2

我可以對文件做如此簡單,就像這樣:複製目錄JDrive/USB

public static void MoveAllFilesFromDesktopToJDrive() 
     { 
      DirectoryInfo di = new DirectoryInfo(@"C:\Users\Tafe\Desktop\"); 
      DirectoryInfo Jdrive = new DirectoryInfo(@"J:\"); 

      foreach (FileInfo fi in di.GetFiles()) 
      { 
       if (Path.GetFileName(fi.FullName) != "desktop.ini") 
       {      
        fi.MoveTo(Jdrive.FullName + Path.GetFileName(fi.FullName)); 
       }  
      } 
     } 

但是,試圖在目錄中相同的操作告訴我,我動不了目錄翻過卷。 OK,然後,所以這是我試過:

public static void MoveAllDirsFromDeskTopToJDrive() 
     { 
      DirectoryInfo di = new DirectoryInfo(@"C:\Users\Tafe\Desktop\"); 
      DirectoryInfo Jdrive = new DirectoryInfo(@"J:\"); 

      foreach (DirectoryInfo dirs in di.GetDirectories()) 
      { 
       Directory.CreateDirectory(Jdrive + Path.GetFileName(dirs.FullName)); 

      } 
     } 

此份文件的名稱,而不是內容,我只想移動內容,就像我跟我的MoveAllFilesFromDesktopToJDrive()方法做了,但目錄中包含子目錄和子目錄等,所以我無法弄清楚。我知道一個關於遞歸的TINY位,但還不足以嘗試這個。另外,它不可能那麼難嗎?在API中必須有更好的東西來促進這一點?如果沒有,任何幫助完成這種方法MoveAllFilesFromDesktopToJDrive()將是一個救星!

+0

有沒有「複製這整個文件夾」功能,您可以調用。這一切都必須遞歸完成。 Google上有很多結果可以完成您的工作。 –

回答

0

試試你的代碼中循環這個地方:

string fileName = "test.txt"; 
    string sourcePath = @"C:\Users\Public\TestFolder"; 
    string targetPath = @"C:\Users\Public\TestFolder\SubDir"; 

    // Use Path class to manipulate file and directory paths. 
    string sourceFile = System.IO.Path.Combine(sourcePath, fileName); 
    string destFile = System.IO.Path.Combine(targetPath, fileName); 

    // To copy a folder's contents to a new location: 
    // Create a new target folder, if necessary. 
    if (!System.IO.Directory.Exists(targetPath)) 
    { 
     System.IO.Directory.CreateDirectory(targetPath); 
    } 

    System.IO.File.Copy(sourceFile, destFile, true); 

欲瞭解更多詳情,請訪問此鏈接:http://msdn.microsoft.com/en-us/library/cc148994.aspx