2017-05-11 11 views
0

Je veux donc enregistrer ce qui se passe lorsque je sauvegarde des fichiers mais je ne suis pas sûr de savoir comment le faire fonctionner pour les fichiers dans les sous-répertoires. En ce moment j'ai ce code qui fonctionne pour tous les fichiers du répertoire sélectionné, mais ne fonctionne pas pour les fichiers sous-répertoireCréation d'un journal d'une sauvegarde C#

private void LogBackup(string sourceDirName, string destDirName) 
    { 
     List<string> lines = new List<string>(); 
     string logDestination = this.tbox_LogFiles.Text; 
     string dateString = DateTime.Now.ToString("MM-dd-yyyy_H.mm.ss"); 

     DirectoryInfo dir = new DirectoryInfo(sourceDirName); 
     DirectoryInfo[] dirs = dir.GetDirectories(); 

     lines.Add("FILES TO COPY:"); 
     lines.Add("--------------"); 

     FileInfo[] files = dir.GetFiles(); 
     foreach (FileInfo file in files 
      .Where(f => !extensionsToSkip.Contains(f.Extension) && !filesToSkip.Contains(f.FullName)).ToList()) 
     { 
      string desttemppath = Path.Combine(destDirName, file.Name); 
      string sourcetemppath = Path.Combine(sourceDirName, file.Name); 
      lines.Add("SOURCE FILE:"); 
      lines.Add(sourcetemppath); 
      lines.Add("DESTINATION FILE:"); 
      lines.Add(desttemppath); 
      lines.Add(""); 
     } 

     foreach (DirectoryInfo subdir in dirs 
      .Where(f => !foldersToSkip.Contains(f.FullName))) 
     { 
      //NOT SURE WHAT TO WRITE HERE 
     } 

     using (StreamWriter writer = new StreamWriter(logDestination + @"\LOG " + dateString + ".txt")) 
     { 
      foreach (string line in lines) 
      { 
       writer.WriteLine(line); 
      } 
     } 

    } 

Toutes les idées s'il vous plaît?

Répondre

0

Inclure le SearchOption.AllDirectories et vous obtiendrez tous les sous-répertoires:

DirectoryInfo dir = new DirectoryInfo(sourceDirName); 
DirectoryInfo[] dirs = dir.GetDirectories("*", SearchOption.AllDirectories); 

lorsque vous boucle maintenant à travers les répertoires, vous aurez également le premier niveau de sous-répertoires et pour chaque répertoire simplement obtenir les fichiers qu'il contient

foreach (DirectoryInfo subdir in dirs) 
{ 
    FileInfo[] files = subdir.GetFiles(); 

    ......