/// <summary> /// 更新本地版本信息 /// </summary> /// <param name="ab">Ab.</param> public static void SyncVersion(List <string> abs) { // 遍历需要更新的ab信息 foreach (string ab in abs) { // 新版树中没有该版本信息 CsvRow data = mNewVersionCsv.FindByKey(ab); if (data == null) { return; } // 修正本地版本信息 CsvRow oldData = mVersionCsv.FindByKey(ab); // 如果是新增资源 if (oldData == null) { // 构建一列数据 CsvRow row = new CsvRow(mNewVersionCsv); row.Add("bundle", data.Query <LPCValue>("bundle")); row.Add("md5", data.Query <LPCValue>("md5")); row.Add("patch", data.Query <LPCValue>("patch")); row.Add("unzip_size", data.Query <LPCValue>("unzip_size")); row.Add("zip_size", data.Query <LPCValue>("zip_size")); // 添加新数据 mVersionCsv.AddNewRow(row); } else { oldData.Add("md5", data.Query <LPCValue>("md5")); oldData.Add("patch", data.Query <LPCValue>("patch")); oldData.Add("unzip_size", data.Query <LPCValue>("unzip_size")); oldData.Add("zip_size", data.Query <LPCValue>("zip_size")); } } // 序列化 MemoryStream ms = new MemoryStream(); CsvFileMgr.Serialize(ms, mVersionCsv); // 版本文件存放路径 string versionFilePath = string.Format("{0}/{1}.bytes", ConfigMgr.ASSETBUNDLES_PATH, VERSION_NAME); FileStream fs = new FileStream(versionFilePath, FileMode.Create, FileAccess.Write); fs.Write(ms.GetBuffer(), 0, (int)ms.Length); fs.Close(); }
/// <summary> /// 序列化csv文件操作. /// </summary> public static void Save(string filePath, bool checkValid, string dir) { CsvFile csv = new CsvFile(System.IO.Path.GetFileNameWithoutExtension(filePath)); string[] lines = FileMgr.ReadLines(filePath); if (lines.Length == 0) { NIDebug.Log("空文件 {0}", lines); return; } // 解析csv文件 CsvParser cp = new CsvParser(); LPCValue m; try { cp.Load(filePath, checkValid); if (cp.Fields.Count == 0 || cp.Records.Count == 0) { return; } m = ImportMgr.Read(cp); } catch (Exception e) { NIDebug.Log("读取csv错误 {0}\n{1}", filePath, e.ToString()); return; } // 主key csv.primaryKey = cp.PrimaryKey; // 列名字对应的索引 for (int i = 0; i < cp.Fields.Count; i++) { csv.columns.Add(cp.Fields[i].name, i); } // 每列值 csv.rows = new CsvRow[m.AsArray.Count]; for (int i = 0; i < m.AsArray.Count; i++) { LPCValue v = m.AsArray[i]; CsvRow row = new CsvRow(csv); for (int idx = 0; idx < cp.Fields.Count; idx++) { row.Add(idx, v.AsMapping[cp.Fields[idx].name]); } csv.AddRow(i, row); } // 序列化 MemoryStream ms = new MemoryStream(); CsvFileMgr.Serialize(ms, csv); // 写入数据 string fileName = System.IO.Path.GetFileNameWithoutExtension(filePath); // 确保路径存在 Directory.CreateDirectory(dir); FileStream fs = new FileStream(dir + "/" + fileName + CSV_EXT, FileMode.Create, FileAccess.Write); fs.Write(ms.GetBuffer(), 0, (int)ms.Length); fs.Close(); }