private void RefDirToTree(int pid, int deep, string path, List <FileEntity> list) { DirectoryInfo info = new DirectoryInfo(path); DirectoryInfo[] subdir = info.GetDirectories(); FileInfo[] subfile = info.GetFiles(); if (subdir == null || subdir.Length <= 0) { if (subfile == null || subfile.Length <= 0) { } else { list.AddRange(this.CreateList(pid, deep++, subfile)); } } else { foreach (DirectoryInfo item in subdir) { FileEntity entity = new FileEntity(pid, FileEntity.GetNextCount(), deep++, FileType.Directory, item.FullName); list.Add(entity); RefDirToTree(entity.GetId(), entity.GetDeep() + 1, item.FullName, entity.GetList()); } if (subfile == null || subfile.Length <= 0) { } else { list.AddRange(this.CreateList(pid, deep++, subfile)); } } }