lua 读、写文件基本操作实例(二)
来源:互联网 发布:人机大战与网络象棋 编辑:程序博客网 时间:2024/05/19 18:13
--[[dofile("./data.txt")
print(HERO)
print(cha[1].basic.Name)
function SaveTableContent(file, obj ,t) --保存表
local szType = type(obj)
print(szType)
if szType == "number" then
file:write(obj)
elseif szType == "string" then
if t == "key" then
file:write(obj)
else
file:write(string.format("%q", obj))
end
elseif szType == "table" then
--把table的内容格式化写入文件
file:write("{\n")
for i, v in pairs(obj) do
--file:write("")
t = "key"
SaveTableContent(file, i,t)
file:write("=")
t = "value"
SaveTableContent(file, v,t)
file:write(", \n")
end
file:write("}\n")
else
error("can't serialize a ".. szType)
end
end
function SaveTable()
HERO = 2
local file = io.open("data.txt", "w") --打开
assert(file) --是否获得文件句柄
file:write("HERO=")
file:write(HERO)
file:write("\n")
file:write("cha = {}\n")
file:write("cha[1] = \n")
SaveTableContent(file, cha[1],nil)
file:close()--关闭
end
--SaveTable()]]
function serialize(obj)
local lua = ""
local t = type(obj)
if t == "number" then
lua = lua .. obj
elseif t == "boolean" then
lua = lua .. tostring(obj)
elseif t == "string" then
lua = lua .. string.format("%q", obj)
elseif t == "table" then
lua = lua .. "{\n"
for k, v in pairs(obj) do
lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"
end
local metatable = getmetatable(obj)
if metatable ~= nil and type(metatable.__index) == "table" then
for k, v in pairs(metatable.__index) do
lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"
end
end
lua = lua .. "}"
elseif t == "nil" then
return nil
else
error("can not serialize a " .. t .. " type.")
end
return lua
end
function unserialize(lua)
local t = type(lua)
if t == "nil" or lua == "" then
return nil
elseif t == "number" or t == "string" or t == "boolean" then
lua = tostring(lua)
else
error("can not unserialize a " .. t .. " type.")
end
lua = "return " .. lua
local func = loadstring(lua)
if func == nil then
return nil
end
return func()
end
function write_content( fileName,content )
local f = assert(io.open(fileName, 'w'))
f:write(content)
f:close()
end
data = {["a"] = "a", ["b"] = "b", [1] = 1, [2] = 2, ["t"] = {1, 2, 3}}
local sz = serialize(data)
print(sz)
print(type(sz))
write_content("test.txt",sz)
function getFile(file_name)
local f = assert(io.open(file_name, 'r'))
local string = f:read("*all")
f:close()
return string
end
local str=getFile("test.txt")
print("---------")
print(str)
print("******************")
print(unserialize(str))
print(type(unserialize(sz)))
for k,v in pairs(unserialize(str)) do
print(k,v)
end
print(HERO)
print(cha[1].basic.Name)
function SaveTableContent(file, obj ,t) --保存表
local szType = type(obj)
print(szType)
if szType == "number" then
file:write(obj)
elseif szType == "string" then
if t == "key" then
file:write(obj)
else
file:write(string.format("%q", obj))
end
elseif szType == "table" then
--把table的内容格式化写入文件
file:write("{\n")
for i, v in pairs(obj) do
--file:write("")
t = "key"
SaveTableContent(file, i,t)
file:write("=")
t = "value"
SaveTableContent(file, v,t)
file:write(", \n")
end
file:write("}\n")
else
error("can't serialize a ".. szType)
end
end
function SaveTable()
HERO = 2
local file = io.open("data.txt", "w") --打开
assert(file) --是否获得文件句柄
file:write("HERO=")
file:write(HERO)
file:write("\n")
file:write("cha = {}\n")
file:write("cha[1] = \n")
SaveTableContent(file, cha[1],nil)
file:close()--关闭
end
--SaveTable()]]
function serialize(obj)
local lua = ""
local t = type(obj)
if t == "number" then
lua = lua .. obj
elseif t == "boolean" then
lua = lua .. tostring(obj)
elseif t == "string" then
lua = lua .. string.format("%q", obj)
elseif t == "table" then
lua = lua .. "{\n"
for k, v in pairs(obj) do
lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"
end
local metatable = getmetatable(obj)
if metatable ~= nil and type(metatable.__index) == "table" then
for k, v in pairs(metatable.__index) do
lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"
end
end
lua = lua .. "}"
elseif t == "nil" then
return nil
else
error("can not serialize a " .. t .. " type.")
end
return lua
end
function unserialize(lua)
local t = type(lua)
if t == "nil" or lua == "" then
return nil
elseif t == "number" or t == "string" or t == "boolean" then
lua = tostring(lua)
else
error("can not unserialize a " .. t .. " type.")
end
lua = "return " .. lua
local func = loadstring(lua)
if func == nil then
return nil
end
return func()
end
function write_content( fileName,content )
local f = assert(io.open(fileName, 'w'))
f:write(content)
f:close()
end
data = {["a"] = "a", ["b"] = "b", [1] = 1, [2] = 2, ["t"] = {1, 2, 3}}
local sz = serialize(data)
print(sz)
print(type(sz))
write_content("test.txt",sz)
function getFile(file_name)
local f = assert(io.open(file_name, 'r'))
local string = f:read("*all")
f:close()
return string
end
local str=getFile("test.txt")
print("---------")
print(str)
print("******************")
print(unserialize(str))
print(type(unserialize(sz)))
for k,v in pairs(unserialize(str)) do
print(k,v)
end
0 0
- lua 读、写文件基本操作实例(二)
- lua 读、写文件基本操作实例(一)
- lua读文件操作
- 文件IO的基本操作(二)
- 小白学Python(二) 基本文件操作
- lua文件操作(1)----基本读写
- 文件的基本操作二
- C++ 文件操作 -- 读与写 基本实现
- VB - 数据文件(二)随机文件及文件基本操作
- Java IO-基本文件写操作
- LUA学习(二)---基本语法
- lua脚本的基本语法(二)
- LUA基本语法二
- lua 写文件io
- quick-cocos2d-x lua 触摸事件、操作文件的实例
- Object-C 学习笔记(二十五)--- 文件操作(写文件/读文件/复制文件)
- Python基础--基本文件操作二
- 六十四、基础框架(二十二)文件操作-基本文件操作
- 正则表达式
- 2014第二届“鹰目之光”户外广告创意大赛
- MySQL忘记密码恢复密码的实现方法
- 位图数据结构的
- Emma+Junit+Ant test android coverage
- lua 读、写文件基本操作实例(二)
- java和c++中的多态、重载、覆盖、隐藏
- 数据结构学习----线性表(Java版的实现)
- Silkscreen over Component Pads Constraint 错误解决方案
- zoj1003 Crashing Balloon
- $("id").val()
- Eclipse热键组合
- Grizzly开发Echo服务器实战
- Shell获取某目录下所有文件夹的名称