private void ProcessDirectory(string targetDirectory, Guid? parent) { var folder = new MusicFolder(parent); if (parent != null) { folder.ParentFolder = _folders.FirstOrDefault(f => f.Id == parent); } folder.Name = targetDirectory.Split('\\').ToList().Last(); try { string[] files = Directory.GetFiles(targetDirectory); foreach (var ext in _musicFileExts) { string[] fileEntries = Directory.GetFiles(targetDirectory, String.Format("*{0}", ext)); if (fileEntries.Any()) { foreach (var f in fileEntries) { folder.Files.Add(new MusicFile { FolderId = folder.Id, Name = f.Split('\\').ToList().Last().Split('.')[0], Extension = f.Split('\\').ToList().Last().Split('.')[1] }); } } } } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } _folders.Add(folder); try { string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory); foreach (string subdirectory in subdirectoryEntries) { ProcessDirectory(subdirectory, folder.Id); } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } }
private String _getFullPathToLeaf(MusicFolder folder) { return folder.ParentFolder == null ? folder.Name : _getFullPathToLeaf(folder.ParentFolder) + "=>" + folder.Name; }