/// <summary> /// 扫描路径 /// </summary> /// <param name="absolute_path"></param> /// <param name="file_handler"></param> /// <param name="dir_handler"></param> public static void ScanPath(string absolute_path, ScanPathHandler file_handler, ScanPathHandler dir_handler) { string[] files = Directory.GetFiles(absolute_path); int count = files.Length; for (int i = 0; i < count; ++i) { string one = files[i].Replace("\\", "/"); ScanPathResult result = file_handler.Invoke(one); // 通常用于 if (result == ScanPathResult.file_return) { return; } } string[] sub_dirs = Directory.GetDirectories(absolute_path); count = sub_dirs.Length; for (int i = 0; i < count; ++i) { string one = sub_dirs[i].Replace("\\", "/"); ScanPathResult result = dir_handler.Invoke(one); if (result == ScanPathResult.dir_continue) { continue; } else if (result == ScanPathResult.dir_return) { return; } BaseHelp.ScanPath(one, file_handler, dir_handler); } }
/// <summary> /// 递归复制目录和文件 /// </summary> /// <param name="src_root">源目录</param> /// <param name="des_root">目标目录</param> public static void CopyDirectory(string src_root, string des_root) { // 清空目录 BaseHelp.ClearDir(des_root); // 递归复制 BaseHelp.ScanPath( src_root, delegate(string absolute_path) { string des_file = absolute_path.Replace(src_root, des_root); File.Copy(absolute_path, des_file, true); return(BaseHelp.ScanPathResult.none); }, delegate(string absolute_path) { string des_dir = absolute_path.Replace(src_root, des_root); if (!Directory.Exists(des_dir)) { Directory.CreateDirectory(des_dir); } return(BaseHelp.ScanPathResult.none); } ); }
/// <summary> /// 清理构建AB生成的manifest汇总信息 /// </summary> /// <param name="root_absolute_path"></param> public static void ClearBuildManifest(string root_absolute_path) { string name = root_absolute_path.Substring(root_absolute_path.LastIndexOf('/') + 1); string src = string.Format("{0}/{1}", root_absolute_path, name); File.Delete(src); File.Delete(string.Format("{0}.manifest", src)); BaseHelp.ScanPath( root_absolute_path, delegate(string file_path) { if (!file_path.EndsWith(".manifest")) { return(ScanPathResult.none); } File.Delete(file_path); return(ScanPathResult.none); }, null ); }