public void AddChildrenRecursive(string path, AssetElement item, IList <AssetElement> rows, bool checkHave = false)
        {
            DirectoryInfo folder = new DirectoryInfo(path);

            if (!folder.Exists)
            {
                return;
            }

            FileSystemInfo[] files = folder.GetFileSystemInfos();
            int length             = files.Length;

            string[]         includeExtensions = BuildUtil.GetFileExtension(item.BuildRule.FileFilterType);
            HashSet <string> includeSet        = new HashSet <string>();

            if (includeExtensions != null)
            {
                for (int i = 0; i < includeExtensions.Length; i++)
                {
                    includeSet.Add(includeExtensions[i]);
                }
            }

            HashSet <string> includes = new HashSet <string>();

            for (int i = 0; i < length; ++i)
            {
                //隐藏文件
                if ((files[i].Attributes & FileAttributes.Hidden) == FileAttributes.Hidden || files[i].Name.EndsWith(".meta"))//&& (files[i].Attributes & FileAttributes.System) != FileAttributes.System)
                {
                    continue;
                }

                string extension = Path.GetExtension(files[i].Name);
                if (!string.IsNullOrEmpty(extension) && !includeSet.Contains(extension))
                {
                    continue;
                }

                AssetElement childItem = null;
                if (checkHave)
                {
                    string guid = AssetDatabase.AssetPathToGUID(BuildUtil.RelativePaths(files[i].FullName));
                    childItem = FindGuid(guid);

                    if (childItem == null)
                    {
                        childItem = CreateTreeViewItemForGameObject(files[i], item, i);

                        if (rows.Count > index)
                        {
                            rows.Insert(index, childItem);
                        }
                        else
                        {
                            rows.Add(childItem);
                        }
                    }
                }
                else
                {
                    childItem = CreateTreeViewItemForGameObject(files[i], item, i);

                    rows.Add(childItem);
                    //AddChildrenRecursive(files[i].FullName, childItem, rows, checkHave);
                }

                childItem.Reflush();

                includes.Add(childItem.GUID);
                //Debug.LogError(rows.Count + "====" + index + "===" + files[i].Name);
            }

            //删除旧数据
            if (item.children != null && item.children.Count != includes.Count)
            {
                for (int i = item.children.Count - 1; i >= 0; i--)
                {
                    TreeElement element = item.children[i];
                    if (!includes.Contains(element.GUID))
                    {
                        item.children.RemoveAt(i);
                        m_Data.Remove(element as AssetElement);
                    }
                }
            }
        }