static IntDirectory ParseFileTree(List <ArchiveFileInfo> files, string inPath = "") { var dir = new IntDirectory(); var sp = inPath.Split('\\'); dir.dirName = (sp.Count() == 1) ? sp[0] : sp[sp.Count() - 1]; dir.fullDirName = inPath; var pf = files.Where(f => f.FileName.Replace(inPath + "\\", "").Count(c => c == '\\') <= 0).ToList(); var nf = files.Except(pf).ToList(); dir.AddFiles(pf); var distinctDirNames = nf.Select(f => f.FileName.Replace(inPath + "\\", "").Split('\\')[0]).Distinct().ToList(); foreach (var newInPathPart in distinctDirNames) { var nl = nf.Where(s => s.FileName.StartsWith(Path.Combine(inPath, newInPathPart))).ToList(); dir.AddDirectory(ParseFileTree(nl, Path.Combine(inPath, newInPathPart))); } return(dir); }
public void AddDirectory(IntDirectory dir) { dirs.Add(dir); }
public void AddDirectory(IntDirectory dir) { _directories.Add(dir); }