文件操作模块
文件操作模块 - file
标有 🔤 的函数将读入的文件作为 UTF-8 文本文件进行处理。
判断文件或目录是否存在 (file.exists)
声明
存在信息 = file.exists(文件或目录路径)
参数及返回值
- 文件或目录路径 文本型
- 存在信息
false
或"file"
或"directory"
false
路径不存在"file"
路径是一个文件"directory"
路径是一个目录
示例
file.exists
if file.exists("/var/mobile/1.zip") then
sys.alert("`/var/mobile/1.zip` 存在")
else
sys.alert("`/var/mobile/1.zip` 不存在")
end
--
if file.exists("/var/mobile/1.zip") == "file" then
sys.alert("`/var/mobile/1.zip` 存在并且是个文件")
else
sys.alert("`/var/mobile/1.zip` 不是文件")
end
--
if file.exists("/var/mobile/123/") == "directory" then
sys.alert("`/var/mobile/123/` 存在并且是个目录")
else
sys.alert("`/var/mobile/123/` 不是目录")
end
列出目录内所有文件名 (file.list)
声明
文件列表 = file.list(目录路径)
参数及返回值
- 目录路径 文本型
- 文件列表
- 文本型顺序表,如果目录不存在或指定路径是一个文件则返回
nil
- 文本型顺序表,如果目录不存在或指定路径是一个文件则返回
示例
file.list
local list = file.list("/var/mobile/")
if list then
nLog("目录 `/var/mobile/` 中有" .. #list .. "个文件或目录")
for _, name in ipairs(list) do
nLog(name)
end
sys.alert(print.out())
else
sys.alert("`/var/mobile/` 不是目录")
end
获得文件的尺寸 (file.size)
声明
文件尺寸 = file.size(文件路径)
参数及返回值
- 文件路径 文本型
- 文件尺寸
- 整数型,单位为字节,如果文件不存在或指定路径是一个目录则返回
nil
- 整数型,单位为字节,如果文件不存在或指定路径是一个目录则返回
示例
file.size
local fsize = file.size("/var/mobile/1.zip")
if fsize then
sys.alert("`/var/mobile/1.zip` 的尺寸为:" .. fsize .. "字节")
else
sys.alert("`/var/mobile/1.zip` 不是文件")
end
读取文件中的数据 (file.reads)
声明
文件内容 = file.reads(文件路径)
参数及返回值
- 文件路径 文本型
- 文件内容
- 字符串型,整个文件的数据内容,如果文件不存在或指定路径是一个目录则返回
nil
- 字符串型,整个文件的数据内容,如果文件不存在或指定路径是一个目录则返回
示例
file.reads
local data = file.reads("/var/mobile/1.zip")
if data then
sys.alert("`/var/mobile/1.zip` 的尺寸为:" .. #data .. "字节")
else
sys.alert("`/var/mobile/1.zip` 不是文件")
end
将数据写入到文件 (file.writes)
声明
操作成败 = file.writes(文件路径, 待写入内容)
参数及返回值
- 文件路径 文本型
- 待写入内容 字符串型
- 操作成败 布尔型
说明
将数据覆盖写入到 文件路径,文件不存在会创建文件,指定路径的上级目录不存在则会返回 false
。
示例
file.writes
local success = file.writes("/var/mobile/1.txt", "苟")
if success then
sys.alert("写入成功")
else
sys.alert("写入失败")
end
将数据追加到文件末尾 (file.appends)
声明
操作成败 = file.appends(文件路径, 待追加内容)
参数及返回值
- 文件路径 文本型
- 待追加内容 字符串型
- 操作成败 布尔型
说明
将 待追加内容 追加到文件末尾,文件不存在会创建文件,指定路径的上级目录不存在则会返回 false
。
示例
file.appends
local success = file.appends("/var/mobile/1.txt", "利国家生死矣")
if success then
sys.alert("写入成功")
else
sys.alert("写入失败")
end
🔤 统计文本文件的总行数 (file.line_count)
声明
行数 = file.line_count(文件路径)
参数及返回值
- 文件路径 文本型
- 行数
- 整数型,空文件将返回
1
,文件不存在返回nil
- 整数型,空文件将返回
示例
file.line_count
local cnt = file.line_count("/var/mobile/1.txt")
if cnt then
sys.alert("`/var/mobile/1.txt` 一共有 " .. cnt .. " 行")
else
sys.alert("`/var/mobile/1.txt` 不是文件")
end
🔤 获取文本文件指定行的内容 (file.get_line)
声明
行内容 = file.get_line(文件路径, 行号)
参数及返回值
- 文件路径 文本型
- 行号
- 整数型,传入正整数以指定行号,传入
0
无效,负数则为倒数行号
- 整数型,传入正整数以指定行号,传入
- 行内容
- 文本型,操作失败返回
nil
- 文本型,操作失败返回
说明
行号从 1
开始,如果行号超出范围或文件不存在则返回 nil
。
示例
file.get_line
local data = file.get_line("/var/mobile/1.txt", 1)
if data then
data = string.strip_utf8_bom(data) -- 处理掉可能存在的 UTF8-BOM
sys.alert("`/var/mobile/1.txt` 第一行的内容是 " .. data)
else
sys.alert("`/var/mobile/1.txt` 不是文件")
end
🔤 设置文本文件指定行的内容 (file.set_line)
声明
操作成败 = file.set_line(文件路径, 行号, 待写入内容)
参数及返回值
- 文件路径 文本型
- 行号
- 整数型,传入正整数以指定行号,
0
为最后一行 + 1,负数则为倒数行号
- 整数型,传入正整数以指定行号,
- 待写入内容 文本型
- 操作成败 布尔型
说明
设置文本文件指定行的内容,行数不够用空行补足,文件不存在会创建文件,指定路径的上级目录不存在则会返回 false
。
示例
file.set_line
local success = file.set_line("/var/mobile/1.txt", 3, "哈哈哈")
if success then
sys.alert("操作成功")
else
sys.alert("操作失败")
end
🔤 在文本文件指定行前插入内容 (file.insert_line)
声明
操作成败 = file.insert_line(文件路径, 行号, 待插入的内容)
参数及返回值
- 文件路径 文本型
- 行号
- 整数型,传入正整数以指定行号,
0
为最后一行 + 1,负数则为倒数行号
- 整数型,传入正整数以指定行号,
- 待插入的内容 文本型
- 操作成败 布尔型
说明
在文本文件指定行前插入内容,行数不够用空行补足,文件不存在会创建文件,指定路径的上级目录不存在则会返回 false
。
示例
file.insert_line
local success = file.insert_line("/var/mobile/1.txt", 2, "岂因祸福避趋之")
if success then
sys.alert("操作成功")
else
sys.alert("操作失败")
end
🔤 移除文本文件指定行 (file.remove_line)
声明
操作成败, 被删除行的内容 = file.remove_line(文件路径, 行号)
参数及返回值
- 文件路径 文本型
- 行号
- 整数型,传入正整数以指定行号,
0
为最后一行 + 1,负数则为倒数行号
- 整数型,传入正整数以指定行号,
- 操作成败 布尔型
- 被删除行的内容
- 文本型,操作失败返回
nil
- 文本型,操作失败返回
说明
- 行号从
1
开始,如果行号超出范围或文件不存在则返回nil
。 - 如果被移除的行之后还有内容,那么后面行会向前移动。
示例
file.remove_line
local success, line = file.remove_line("/var/mobile/1.txt", 3)
if success then
sys.alert("操作成功,被删除的行的内容是:" .. line)
else
sys.alert("操作失败")
end
🔤 获取一个文本文件的所有行 (file.get_lines)
声明
行数组 = file.get_lines(文件路径)
参数及返回值
- 文件路径 文本型
- 行数组
- 文本型顺序表,文件不存在返回
nil
- 文本型顺序表,文件不存在返回
说明
获取一个文本文件的所有行,空文件返回 { [1] = "" }
,文件不存在返回 nil
。
示例
file.get_lines
local lines = file.get_lines("/var/mobile/1.txt")
if lines then
lines[1] = string.strip_utf8_bom(lines[1]) -- 处理掉可能存在的 UTF8-BOM
if #lines[1] > 0 then
sys.alert("文件第一行的内容是 " .. lines[1])
else
sys.alert("文件是空的")
end
else
sys.alert("操作失败")
end
🔤 将一个顺序表转换逐行覆盖写入到文件中 (file.set_lines)
声明
操作成败 = file.set_lines(文件路径, 行数组)
参数及返回值
- 文件路径 文本型
- 行数组 文本型顺序表
- 操作成败 布尔型
说明
将一个顺序表转换逐行覆盖写入到文件中,文件不存在会创建文件,指定路径的上级目录不存在则会返回 false
。
示例
file.set_lines
local success = file.set_lines("/var/mobile/1.txt", {
"苟利国家生死以",
"岂因祸福避趋之",
})
if success then
sys.alert("+1s")
else
sys.alert("操作失败")
end
🔤 将一个顺序表转换逐行插入到文件指定行前 (file.insert_lines)
声明
操作成败 = file.insert_lines(文件路径, 行号, 行数组)
参数及返回值
- 文件路径 文本型
- 行号
- 整数型,传入正整数以指定行号,
0
为最后一行 + 1,负数则为倒数行号
- 整数型,传入正整数以指定行号,
- 行数组 文本型顺序表
- 操作成败 布尔型
说明
将一个顺序表转换逐行插入到文件指定行前,文件不存在会创建文件,指定路径的上级目录不存在则会返回 false
。
示例
file.insert_lines
local success = file.insert_lines("/var/mobile/1.txt", 0, { -- 将下面两行字追加到文件末尾
"I will do whatever it takes to serve my country even at the cost of my own life,",
"regardless of fortune or misfortune to myself.",
})
if success then
sys.alert("+1s")
else
sys.alert("操作失败")
end