lua class.cpp

下定义

int WriteDataToFile(lua_State* pArgs)
{
string sPath = Lua_Tool::GetString(pArgs, 1);
void* pUserData = Lua_Tool::GetUserData(pArgs, 2);
int nSize = Lua_Tool::GetInteger(pArgs, 3);
Data data;
data.copy((unsigned char*)pUserData, nSize);
FileUtils::getInstance()->removeFile(sPath);
FileUtils::getInstance()->writeDataToFile(data, sPath);
return 0;
}

int ReadDataFromFile(lua_State* pArgs)
{
string sPath = Lua_Tool::GetString(pArgs, 1);
Data data = FileUtils::getInstance()->getDataFromFile(sPath);
int nSize = data.getSize();
unsigned char* pUserData[10240] = { 0 };
memcpy(pUserData, data.getBytes(), nSize);
Lua_Tool::PushUserData(pArgs, pUserData);
Lua_Tool::PushInteger(pArgs, nSize);
return 2;
}

用来存储和读取录像的二进制存储数据

战绩读取成为Table后转化为json文件进行文档存储

local NewtbRecondData={};
     if fileUtils:isFileExist(recondDirPath..tostring(uUserId)..".json") == false then
        print(" buffer:ReadInt();error", recondDirPath..tostring(uUserId)..".json")
        NewtbRecondData = {};
        table.insert(NewtbRecondData,tbRecondData)
        local json=json.encode(NewtbRecondData)
        SaveRecond(json,size)
     else  
        local file = fileUtils:getStringFromFile(recondDirPath..tostring(uUserId)..".json");  
        NewtbRecondData = json.decode(file)
        local i=#NewtbRecondData
        --判断是否为同一大局
        if(tbRecondData.bigTime==NewtbRecondData[i].bigTime) then
            PrintTable(NewtbRecondData[i].tbUserPoint["0"])
            table.insert(NewtbRecondData[i].tbReplayTime,table.nums(NewtbRecondData[i].tbReplayTime),tbRecondData.tbReplayTime[0])
            NewtbRecondData[i].nGroupNumber_Now=tbRecondData.nGroupNumber_Now
            for j = 0, tbRecondData.nPersonNumber-1 do
            table.insert(NewtbRecondData[i].tbUserPoint[tostring(j)].tbPoint,table.nums(NewtbRecondData[i].tbUserPoint[tostring(j)].tbPoint),tbRecondData.tbUserPoint[j].tbPoint[0])
            NewtbRecondData[i].tbUserPoint[tostring(j)].sumPoint=tbRecondData.tbUserPoint[j].sumPoint
            local json=json.encode(NewtbRecondData)
            print("RecondData=",json);
            SaveRecond(json,size)
            end
            --如果战绩过多则删除
            if(#NewtbRecondData>50) then
            print(#NewtbRecondData)
            table.remove(NewtbRecondData,"1")
            end
        else
            table.insert(NewtbRecondData,tbRecondData)
            local json=json.encode(NewtbRecondData)
            print("RecondData=",json);
            SaveRecond(json,size)
        end

注意战绩经过json.decode转化为Table后数组下标需字符串化(tostring)

function SaveRecond(buf,size)
    local fileUtils = cc.FileUtils:getInstance();
    local strWritablePath = fileUtils:getWritablePath();
    local recondDirPath = strWritablePath.."recond/";
    if fileUtils:isDirectoryExist(strWritablePath.."recond/") == false then
        --不存在文件夹
        if fileUtils:createDirectory(recondDirPath) == false then
            --创建文件夹失败
            return false;
        end
    end
    local uUserId1 = tostring(g_tableUserData.nUserId1)
    local uUserId2 = tostring(g_tableUserData.nUserId2)
    local uUserId = uUserId1 .. uUserId2
   
    local file = io.open(recondDirPath..uUserId..".json" ,"w+");
    if file then
        if file:write(tostring(buf).."\n") == nil then 
            return false;
        end
        io.close(file);
       
        --WriteDataToFile(recondDirPath..tostring(nUserId) ,buf,size);
        --DeleteRecond(30);
        return true;
    else
        return false;
    end
   
 end

将棋牌录像与战绩进行本地化存储相关推荐

  1. 【量化交易笔记】2.数据本地化存储(CSV)

    上一节介绍了数据获到的三种方式,从本节开始,选用baostock工具对后续操作. 本文继续作数据准备,具体介绍数据本地化的CSV文件格式. A股数据量比较大,需要进行筛选并分类保存. 基本思想 将采集 ...

  2. java如何获取storage_本地化存储Storage

    为什么会引入Storage(sessionStorage,localStorage,globalStorage) Web storage的目的是克服由cookie带来的限制,当数据需要严格控制在客户端 ...

  3. OneNote笔记本软件,本地化存储,再也不用担心数据丢失

    OneNote 2016笔记软件操作方便,使用很顺手.若你对使用网络链接分享不在意,那OneNote是不二之选.不能用链接分享,还是可以通过直接把笔记文件发给需要的人来分享. OneNote的好用就不 ...

  4. LiveGBS流媒体平台GB/T28181功能-安防监控录像服务端集中存储云上录像存储云端录像回看下载

    LiveGBS功能-安防监控录像服务端集中存储云上录像存储云端录像回看下载 1.平台概述 2.平台录像回放 2.1.云端录像 2.1.1.存储位置 2.1.1.1.支持分布式存储 2.1.2.页面操作 ...

  5. LiveGBS流媒体平台-GBT28181国标视频平台录像存储设备录像回看解决方案

    LiveGBS流媒体平台-GBT28181国标视频平台录像存储设备录像回看解决方案 1.平台概述 2.平台录像回放 2.1.设备录像 2.1.1.存储位置 2.1.1.1.下级硬件设备 2.1.1.2 ...

  6. html5 本地批量存储,HTML5本地存储

    什么是HTML5存储? 简单地说,它是一种让web页面在浏览器端本地化存储键值对的方式.跟cookies一样,即使你从网站导航到别的网站,关掉了浏览器的tab页,退出了浏览器,数据依然存在:与cook ...

  7. 解读晦涩的存储技术缩略语

    这些日子以来有关存储技术的缩略语漫天飞舞,而且每天都好象不断冒出更多的新鲜词,所以要熟谙这些小东西还真是费神.事到如今,我们经常收到读者的电子邮件,询问这些令人难以捉摸的缩略语,以及它们对网络存储又有 ...

  8. LC3视角:Kubernetes下日志采集、存储与处理技术实践

    摘要: 在Kubernetes服务化.日志处理实时化以及日志集中式存储趋势下,Kubernetes日志处理上也遇到的新挑战,包括:容器动态采集.大流量性能瓶颈.日志路由管理等问题.本文介绍了" ...

  9. 海量数据下的存储技术,哪些模式靠得住?

    高清.长周期呈现海量存储需求 高清已经在安防行业全面铺开应用.除了带给用户能够看得更清的良好视觉感受外,对存储容量的需求亦成几何式增长.例如: 前端IPC有130W到500W像素,码流也从有2Mbps ...

最新文章

  1. Runnable接口介绍(中文文档)
  2. 在matlab中有几种获得帮助的途径,matlab经典习题及解答
  3. Flask框架(flask中设置响应信息的方法,返回json数据的方法)
  4. 【Auto.js】使用命令删除图片后,更新图库缓存
  5. 穷人靠力,富人借力!看完你将明白一切!
  6. 计算机应用基础 辅助教学系统,计算机应用基础课程辅助教学及智能测评系统使用手册——网络版.docx...
  7. extjs4.2 前端读取对象的方法
  8. 如何保证软件质量?汽车软件基于模型开发的十个问题与质量工具推荐
  9. 大数据、人工智能带来的危机:科技巨头会毁掉我们的生活吗?
  10. IDOC的处理函数IDOC_INPUT_ORDERS的增强点的分析
  11. mysql router 介绍_MySQL Router 介绍篇
  12. git提交错分支处理
  13. 实时Linux内核(PREEMPT_RT)的编译安装以及测试
  14. 分享一个自用小功能--微信小程序二维码签到
  15. 学习漫画应该如何入门?其实掌握这5种漫画套路就可以啦
  16. Excel提取重复项
  17. Redis Redis Cluster 字段模糊匹配及删除
  18. 浅谈Vue渐进式的理解
  19. 【JAVA】逻辑控制
  20. asp.net中获取当前url的方法(转)

热门文章

  1. 矩形面积Python解法
  2. stm32定时器实现控制led1秒亮,一秒灭
  3. Linux脚本命令万能手脚架整理
  4. Android studio环境配置万能方案
  5. svg-icon使用
  6. 搜狗浏览器中如何设置HTTP代理
  7. EHCI和OHCI,UHCI的比较和区别
  8. 《唐探3》口碑急转直下?看看影迷们到底都说了些啥
  9. Unity进阶:PlayMaker
  10. 吴军,硅谷来信3,42,能否快速上手来判断一项技能是否适合自己?