Luat实例教程:系统文件读写
2018-03-23 本文已影响2人
Luat物联网通信模块
本教程目的:开发者可以将数据保存在系统里,即使断电数据也不会丢失。
Lua文件读写的API使用方法查阅Lua io
文件读写模式有以下几种:
模式 | 描述 |
---|---|
r | 以只读方式打开文件,该文件必须存在。 |
w | 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 |
a | 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) |
r+ | 以可读写方式打开文件,该文件必须存在。 |
w+ | 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 |
a+ | 与a类似,但此文件可读可写 |
b | 二进制模式,如果文件是二进制文件,可以加上b |
1、打开demo/fs,打开test.lua
module(...,package.seeall)--所有程序可见
local USER_DIR_PATH = "/user_dir"
--[[该demo演示四种接口,第一种readfile(filename)读文件,第二种writevala(filename,value),写文件内容,附加模式,
第三种function writevalw(filename,value),写文件内容,覆盖模式,第四种deletefile(filename),删除文件。--]]
--[[
函数名:readfile(filename)
功能:打开所输入文件名的文件,并输出储存在里面额内容
参数:文件名
返回值:无 ]]
local function readfile(filename)--打开指定文件并输出内容
local filehandle=io.open(filename,"r")--第一个参数是文件名,第二个是打开方式,'r'读模式,'w'写模式,对数据进行覆盖,'a'附加模式,'b'加在模式后面表示以二进制形式打开
if filehandle then --判断文件是否存在
local fileval=filehandle:read("*all")--读出文件内容
if fileval then
print(fileval) --如果文件存在,打印文件内容
filehandle:close()--关闭文件
else
print("文件为空")--文件不存在
end
else
print("文件不存在或文件输入格式不正确") --打开失败
end
end
--[[
函数名: writevala(filename,value)
功能:向输入的文件中添加内容,内容附加在原文件内容之后
参数:第一个文件名,第二个需要添加的内容
返回值:无 --]]
local function writevala(filename,value)--在指定文件中添加内容,函数名最后一位就是打开的模式
local filehandle = io.open(filename,"a")--第一个参数是文件名,后一个是打开模式'r'读模式,'w'写模式,对数据进行覆盖,'a'附加模式,'b'加在模式后面表示以二进制形式打开
if filehandle then
filehandle:write(value)--写入要写入的内容
filehandle:close()
else
print("文件不存在或文件输入格式不正确") --打开失败
end
end
--[[
函数名:writevalw(filename,value)
功能:向输入文件中添加内容,新添加的内容会覆盖掉原文件中的内容
参数:同上
返回值:无 --]]
local function writevalw(filename,value)--在指定文件中添加内容
local filehandle = io.open(filename,"w")--第一个参数是文件名,后一个是打开模式'r'读模式,'w'写模式,对数据进行覆盖,'a'附加模式,'b'加在模式后面表示以二进制形式打开
if filehandle then
filehandle:write(value)--写入要写入的内容
filehandle:close()
else
print("文件不存在或文件输入格式不正确") --打开失败
end
end
--[[函数名:deletefile(filename)
功能:删除指定文件中的所有内容
参数:文件名
返回值:无 --]]
local function deletefile(filename)--删除指定文件夹中的所有内容
local filehandle = io.open(filename,"w")
if filehandle then
filehandle:write()--写入空的内容
print("删除成功")
filehandle:close()
else
print("文件不存在或文件输入格式不正确") --打开失败
end
end
--打印文件系统的剩余空间
print("get_fs_free_size: "..rtos.get_fs_free_size().." Bytes")
--成功创建一个目录(目录已存在,也返回true表示创建成功)
if rtos.make_dir(USER_DIR_PATH) then
readfile(USER_DIR_PATH.."/3.txt")
writevalw(USER_DIR_PATH.."/3.txt","great")
readfile(USER_DIR_PATH.."/3.txt")
writevala(USER_DIR_PATH.."/3.txt","great")
readfile(USER_DIR_PATH.."/3.txt")
deletefile(USER_DIR_PATH.."/3.txt")
readfile(USER_DIR_PATH.."/3.txt")
end
2、通过trace看读写结果
image可以看到执行顺序为:创建文件->向文件写内容->向文件追加内容->删除文件