예제 #1
0
        /// <summary>
        /// 递归查找所有文件夹以及文件,填满字典
        /// </summary>
        /// <param name="dirPath">查找的目录</param>
        private static void RecursiveDirs(string dirPath)
        {
            errorPath = "init_" + dirPath;
            string[] files = Directory.GetFiles(dirPath);
            for (int i = 0; i < files.Length; i++)
            {
                CustomFileInfo item = new CustomFileInfo(files[i], Guid.NewGuid().ToString());
                if (fileDic.ContainsKey(files[i]))
                {
                    fileDic[files[i]] = item;
                }
                else
                {
                    fileDic.Add(files[i], item);
                }
            }

            string[] dirs = Directory.GetDirectories(dirPath);
            for (int i = 0; i < dirs.Length; i++)
            {
                CustomDirectoryInfo item = new CustomDirectoryInfo(dirs[i], Guid.NewGuid().ToString());
                if (dirDic.ContainsKey(dirs[i]))
                {
                    dirDic[dirs[i]] = item;
                }
                else
                {
                    dirDic.Add(dirs[i], item);
                }
                RecursiveDirs(dirs[i]);
            }
        }
예제 #2
0
        /// <summary>
        /// 填写产品列表
        /// </summary>
        /// <param name="sceneDir">场景目录</param>
        /// <param name="scene">归属场景</param>
        private static void FindProduct(CustomDirectoryInfo sceneDir, SceneInfo scene)
        {
            errorPath = "FindProduct_" + sceneDir.FullPath;
            string[] productsDir = Directory.GetDirectories(sceneDir.FullPath);

            for (int i = 0; i < productsDir.Length; i++)
            {
                CustomDirectoryInfo dirItem;// = dirDic[productsDir[i]];
                if (!dirDic.TryGetValue(productsDir[i], out dirItem))
                {
                    errorPath = productsDir[i];
                    throw new Exception("未检查到相关key值");
                }
                errorPath = dirItem.FullPath;
                //去除中间的多余的横线造成的空字数据
                string[]      productAtt     = dirItem.everyPathArr[dirItem.everyPathArr.Length - 1].Split('-');
                List <string> productAttList = new List <string>(productAtt);
                for (int j = productAttList.Count - 1; j >= 0; j--)
                {
                    if (string.IsNullOrEmpty(productAttList[j]))
                    {
                        productAttList.RemoveAt(j);
                    }
                }
                productAtt = productAttList.ToArray();

                ProductInfo product = new ProductInfo();
                product.Name        = productAtt[0];
                product.productType = "厨房";
                //添加标签
                ProductFlagStruct productFlag = new ProductFlagStruct();
                productFlag.flagTypeName = productAtt[1];
                productFlag.flagValue    = productAtt[2];
                product.flag.Add(productFlag);

                //文件名列表,查找缩略图,以及产品介绍路径
                string[] filesPath = Directory.GetFiles(dirItem.FullPath);
                for (int j = 0; j < filesPath.Length; j++)
                {
                    CustomFileInfo fileInfo;
                    if (fileDic.TryGetValue(filesPath[j], out fileInfo))
                    {
                        if (fileInfo.ExName == ".jpg" || fileInfo.ExName == ".png" || fileInfo.ExName == ".jpge")
                        {
                            if (fileInfo.FileName.IndexOf("thumb") != -1)
                            {
                                product.ThumbnailPath = fileInfo.FullPath;
                            }
                            else
                            {
                                FindPano(fileInfo, product, scene);
                            }
                            //break;
                        }
                        else if (fileInfo.ExName == ".txt")
                        {
                            product.ProductContentPath = fileInfo.FullPath;
                        }
                    }
                }

                product.relatedSceneNames.Add(scene.Name);
                scene.includeProductNames.Add(product.Name);

                productList.Add(product);
            }
        }