Example #1
0
        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);
        }
Example #2
0
 public void AddDirectory(IntDirectory dir)
 {
     dirs.Add(dir);
 }
Example #3
0
 public void AddDirectory(IntDirectory dir)
 {
     _directories.Add(dir);
 }