2016-04-21 94 views
1

保留文件夾的整個結構以便稍後可以訪問以複製/刪除的最簡單方法是什麼?截至目前,以下是我如何做,但它不保留子目錄內的任何東西,多個不同的文件可以共享,所以刪除整個子目錄不是一個選項,沒有至少再次複製根目錄。最簡單的方法來存儲整個文件結構?

 //get root directories located in mods folder 

     List<string> rootDirectories = new List<string>(); 
     rootDirectories = Directory.GetDirectories("mods", "*").ToList(); 

     for (int i = 0; i < rootDirectories.Count(); i++) 
     { 
      Console.WriteLine("Root Directory: " + rootDirectories[i]); 
     } 

     //get subdirectories from each of those root directories 

     List<List<string>> subDirectories = new List<List<string>>(); 

     for (int i = 0; i < rootDirectories.Count(); i++) 
     { 
      List<string> temp = new List<string>(); 
      temp = Directory.GetDirectories(rootDirectories[i], "*").ToList(); 

      //for (int j = 0; j < temp.Count(); j++) 
      //{ 
      // temp[j] = Path.GetFileName(temp[j]); 
      //} 

      subDirectories.Add(temp); 
     } 

     for (int i = 0; i < rootDirectories.Count(); i++) 
     { 
      for (int j = 0; j < subDirectories[i].Count(); j++) 
      { 
       Console.WriteLine("Sub Directory of " + rootDirectories[i] + ": " + subDirectories[i][j]); 
      } 
     } 

     //get mod file(s) from each root folder 

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

     for (int i = 0; i < rootDirectories.Count(); i++) 
     { 
      List<string> temp = new List<string>(); 
      temp = Directory.GetFiles(rootDirectories[i]).ToList(); 

      for (int k = 0; k < temp.Count(); k++) 
      { 
       temp[k] = Path.GetFileName(temp[k]); 
      } 

       files.Add(temp); 
      for (int j = 0; j < temp.Count(); j++) 
      { 
       Console.WriteLine("File in " + rootDirectories[i] + ": " + temp[j]); 
      } 
     } 

     //create new ModItem 
     //add new ModItem to mods 

     for (int i = 0; i < rootDirectories.Count(); i++) 
     { 
      try 
      { 
       mods.Add(new ModItem(rootDirectories[i], subDirectories[i], files[i])); 
      } 
      catch (Exception e) 
      { 

      } 
     } 

     for (int i = 0; i < mods.Count(); i++) 
     { 
      Console.WriteLine("Check to make sure the ModItem was added: " + mods[i].getRootDirectory()); 
     } 

輸出

Root Directory: mods\Blood Overhaul 
Root Directory: mods\Cleaning 
Root Directory: mods\SM Overhaul 
Sub Directory of mods\Blood Overhaul: mods\Blood Overhaul\Meshes 
Sub Directory of mods\Blood Overhaul: mods\Blood Overhaul\Textures 
Sub Directory of mods\SM Overhaul: mods\SM Overhaul\Materials 
Sub Directory of mods\SM Overhaul: mods\SM Overhaul\Meshes 
Sub Directory of mods\SM Overhaul: mods\SM Overhaul\Textures 
File in mods\Blood Overhaul: BloodOverhaul.file 
File in mods\Cleaning: Cleaning.file 
File in mods\SM Overhaul: SMOverhaul.file 
Check to make sure the ModItem was added: mods\Blood Overhaul 
Check to make sure the ModItem was added: mods\Cleaning 
Check to make sure the ModItem was added: mods\SM Overhaul 

如果我需要添加更多的情況下,讓我知道,這已被竊聽我過去幾天,我想要得到它解決。

回答

0

您可以使用遞歸方法::

public void CopyDirectory(DirectoryInfo dir) 
{ 

// Copy Current directory (dir) file 
//Get inner directory list 
//iterate directories and call CopyDirectory(dir); in iteration 
CopyDirectory(dir); 

} 
相關問題