java调用lua后序列化,lua序列化table表到文件中

先上代码

function luautil.serialize(t, sort_parent, sort_child)

local mark={}

local assign={}

local function ser_table(tbl,parent)

mark[tbl]=parent

local tmp={}

local sortList = {};

for k,v in pairs(tbl) do

sortList[#sortList + 1] = {key=k, value=v};

end

if tostring(parent) == "ret" then

if sort_parent then table.sort(sortList, sort_parent); end

else

if sort_child then table.sort(sortList, sort_child); end

end

for i = 1, #sortList do

local info = sortList[i];

local k = info.key;

local v = info.value;

local key= type(k)=="number" and "["..k.."]" or k;

if type(v)=="table" then

local dotkey= parent..(type(k)=="number" and key or "."..key)

if mark[v] then

table.insert(assign,dotkey.."="..mark[v])

else

table.insert(tmp, "\n"..key.."="..ser_table(v,dotkey))

end

else

if type(v) == "string" then

table.insert(tmp, key..'="'..v..'"');

else

table.insert(tmp, key.."="..tostring(v));

end

end

end

return "{"..table.concat(tmp,",").."}";

end

return "do local ret=\n\n"..ser_table(t,"ret")..table.concat(assign," ").."\n\n return ret end"

end

function luautil.split(str, delimiter)

if (delimiter=='') then return false end

local pos,arr = 0, {}

-- for each divider found

for st,sp in function() return string.find(str, delimiter, pos, true) end do

table.insert(arr, string.sub(str, pos, st - 1))

pos = sp + 1

end

table.insert(arr, string.sub(str, pos))

return arr

end

function luautil.writefile(str, file)

os.remove(file);

local file=io.open(file,"ab");

local len = string.len(str);

local tbl = luautil.split(str, "\n");

for i = 1, #tbl do

file:write(tbl[i].."\n");

end

file:close();

end

1、基础功能抄自云风早期的代码。  这里稍微添加了排序功能,可以传入排序函数,否则表是按哈希排序的,输出后会乱掉。

2、添加了writefile函数,因为lua的文件写入有最大字节数限制,所以一行一行写入。

java对象序列化并存储到文件中

● 如何将一个Java对象序列化到文件里 使用输入输出流,,一个是ObjectOutputStream 对象,ObjectOutputStream 负责向指定的流中写入序列化的对象.当从文件中读取序列 ...

lua的table表去重

推荐阅读:  我的CSDN  我的博客园  QQ群:704621321  我的个人博客 方法一 用过lua的人都知道,lua的table中不允许存在相同的key,利用这个思想,我们可以将原始table ...

Lua增加一个节点到文件中

新建一个文件touch /etc/config/ddns 增加一个节点到文件中uci set ddns.newadd=config :即配置文件,如ddns,ipv6等&l ...

Lua 多维表的遍历中的赋值

说到Lua的遍历将要使用到循环:先说遍历再说循环: 遇到这样类似结构的一个table Data={ []={p1=,pa={,,}}, []={p1=,pa={,,}}, []={p1=,pa={,, ...

关于 lua table表存储函数且运用

--table 是lua的一种数据结构用来帮助我们创建不同的数据类型.如:数组和字典--lua table 使用关联型数组,你可以用任意类型的值来做数组的索引,但这个值不能是nil--lua tabl ...

linux 进阶2--C++读取lua文件中的变量、一维表、二维表

lua 语言非常灵活,一般把lua 作为脚本文件,会用C++与之进行交互.最重要的是C++代码能读取到脚本中的变量.一维表.二维表. 这样有些参数就可以在lua文件进行更改,而不用重新更改C++代码. ...

树形打印lua table表

为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...

[置顶] lua 进阶3--lua文件中调用C++函数

前面讲了一下,C++读取lua文件中的变量,包括一维表.二维表这些,这节讲一下如何在lua文件中去调用C++函数 C++代码如下 #include extern &qu ...

SQLLoader4(数据文件中的列与表中列不一致情况-filler)

A.数据文件中字段个数少于表中列字段个数,但数据文件中缺少的列,在表定义中可以为空.----- 这种情况是比较简单的,只需要将数据文件中数据对应的列的名字写到控制文件中即可.因为SQL*Loader是 ...

随机推荐

UWP深入学习三:依赖属性、附加属性和数据绑定

Dependency properties overview Custom dependency properties Attached properties overview Custom atta ...

WeakHashMap和HashMap的区别

看Java源码的时候,看到了 WeakHashMap ,我一直以来使用的 都是 HashMap,于是查了一下两者的区别 (一) 查看API文档,WeakHashmap要点如下: 1. 以弱键 实现的基 ...

flock防止重复rsync

我使用crontab同步一个文件夹时,发现一个问题,我在crontab中设置的1分钟运行一次.但当那个文件夹的内容改变时.1分钟不一定能同步完,但这时第二个rsync进行又起来了. 这个就产生一个问题 ...

64位Linux安装android开发IDE的全过程

首先特别感谢这个链接: http://www.androiddevtools.cn/ 提供了几乎所有的安卓开发需要用到的资源. 操作系统:CentOS 7. 一.android studio 这个折腾 ...

函数os_file_pread

/*******************************************************************//** Does a synchronous read ope ...

Python命令行参数解析模块argparse

当写一个Python脚本时经常会遇到不同参数不同功能的情况,如何做一个更好看的命令帮助信息以及对命令参数解析呢? 这就需要使用argparse模块 #!/usr/bin/env python # -* ...

may be a diary?

[About Me] SD某弱校高二的OIer. qq 995681518,欢迎一起交流~ 喵喵喵喵喵 "当你想要颓废的那一刻,想一想当初为什么走到了这里." 以下文字充满负面情绪 ...

设置eclipse联想功能

当我们在用eclipse的时候,怎么能够让自己的编码速度加快?我想利用eclipse的提示功能是其中的方法之一.下面就利出配置eclipse联想功能(代码的提示功能)的步骤: 1. 打开Eclipse ...

jenkins中shell脚本编写的两个注意点

在jenkins的build中,如果用shell脚本的话,要记住有两个地方要注意 1.由于默认jenkins是使用/bin/bash -xe xxx.sh来调用脚本的,所以不同于日常写的脚本,任何一行 ...

可视化n次贝塞尔曲线及过程动画演示--大宝剑

起因 研究css中提供了2次.3次bezier,但是没有对n次bezier实现.对n次的实现有很大兴趣,所以就用js的canvas搞一下,顺便把过程动画模拟了一下. 投入真实生产之中,偏少. n次be ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值