private void GenerateReadWriteList() { string file = PathUtil.GetCombinePath(m_ResourceManager.ReadWritePath, PathUtil.GetResourceNameWithSuffix(ResourceListFileName)); string backupFile = null; if (File.Exists(file)) { backupFile = file + BackupFileSuffixName; if (File.Exists(backupFile)) { File.Delete(backupFile); } File.Move(file, backupFile); } try { using (FileStream fileStream = new FileStream(file, FileMode.CreateNew, FileAccess.Write)) { byte[] buffer = null; using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteInt(m_ResourceManager.ReadWriteResourceInfos.Count); foreach (var readWriteResourceInfo in m_ResourceManager.ReadWriteResourceInfos) { int length = readWriteResourceInfo.Value.Length; int hashcode = readWriteResourceInfo.Value.HashCode; ms.WriteUTF8String(readWriteResourceInfo.Key); ms.WriteInt(length); ms.WriteInt(hashcode); } buffer = ms.ToArray(); } fileStream.Write(buffer, 0, buffer.Length); } if (!string.IsNullOrEmpty(backupFile)) { File.Delete(backupFile); } } catch (Exception exception) { if (File.Exists(file)) { File.Delete(file); } if (!string.IsNullOrEmpty(backupFile)) { File.Move(backupFile, file); } throw new Exception(TextUtil.Format("Pack save exception '{0}'.", exception.Message), exception); } }