2017-05-11 17 views
0

所以我想记录当我备份文件时会发生什么,但我不知道如何使它在子目录中的文件中工作。 现在我有这个代码,在选定的目录中的所有文件工作,但子目录的文件创建备份日志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); 
      } 
     } 

    } 

任何想法请不起作用?

回答

0

附上SearchOption.AllDirectories,你会得到所有子目录:

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

当你现在遍历目录,你还会有子目录的第一级和每个目录只得到它所包含的文件

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

    ......