//Trả về danh sách path thỏa mãn vào hàng đợi chứa 1 từ trong số các từ tìm kiếm public static void GetAll_BFS(Queue <string> queue_result, string root, string[] keyword, XFilter boloc)//tìm kiếm theo chiều rộng { Queue <string> pending = new Queue <string>(); pending.Enqueue(root); while (pending.Count != 0) { var path = pending.Dequeue(); string[] next = null; try { next = XFolder.GetDirectories(path).ToArray(); //lấy ra toàn bộ folder con foreach (var subdir in next) { pending.Enqueue(subdir); //cho vào trong stackif (next != null) all += next.Count(); } } catch { } if (next != null) { foreach (string item in next) //kiếm tra trong các folder tên có chứa chuối cần tìm { if (boloc.IsSatisfy(item) && XPath.IsEqualName(item, keyword)) { queue_result.Enqueue(item); } } } try { next = XFolder.GetFiles(path).ToArray(); //lấy ra toàn bộ file trong folder đấy } catch { } if (next != null) { foreach (string item in next) //kiếm tra trong các file tên có chứa chuối cần tìm { if (boloc.IsSatisfy(item) && XPath.IsEqualName(item, keyword)) { queue_result.Enqueue(item); } } } } }
//trả về danh sách folder trong thư mục có đường dirRoot vào treenode public static List <TreeNode> LoadFolder(string dirRoot) { string[] dirs = XFolder.GetDirectories(dirRoot).ToArray(); List <TreeNode> listFolder = new List <TreeNode>(); int index; foreach (string dir in dirs) { index = (int)XImage.listIndex[(int)IndexImage.Folder]; DirectoryInfo di = new DirectoryInfo(dir); TreeNode node = new TreeNode(di.Name, index, index); try { //keep the directory's full path in the tag for use later node.Tag = dir; //if the directory has sub directories add the place holder if (di.GetDirectories().Count() > 0) { node.Nodes.Add(null, "...", 0, 0); } } catch (UnauthorizedAccessException) { index = (int)XImage.listIndex[(int)IndexImage.Lock]; //display a locked folder icon node.ImageIndex = index; node.SelectedImageIndex = index; } catch (Exception) { } finally { listFolder.Add(node); } } return(listFolder); }
//Trả về danh sách path thỏa mãn vào hàng đợi chứa 1 từ trong số các từ tìm kiếm public static void GetOne_BFS(Queue <string> queue_result, string root, string[] keyword, XFilter boloc)//tìm kiếm theo chiều rộng { var path = root; string[] next = null; try { next = XFolder.GetDirectories(path).ToArray(); //lấy ra toàn bộ folder con } catch { } if (next != null) { foreach (string item in next) //kiếm tra trong các folder tên có chứa chuối cần tìm { if (boloc.IsSatisfy(item) && XPath.IsEqualName(item, keyword)) { queue_result.Enqueue(item); } } } try { next = XFolder.GetFiles(path).ToArray(); //lấy ra toàn bộ file trong folder đấy } catch { } if (next != null) { foreach (string item in next) //kiếm tra trong các file tên có chứa chuối cần tìm { if (boloc.IsSatisfy(item) && XPath.IsEqualName(item, keyword)) { queue_result.Enqueue(item); } } } }