/// <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]); } }
/// <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); } }