Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
            }
                );
        }
Ejemplo n.º 3
0
        /// <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
                );
        }