使用 Lua 脚本打开没有文件名的文件

晚上好,

我目前正在开发一个从文件中读取信息到数据库的程序,为了测试目的,我过去通常使用 IO: 的传统方式打开测试文件:

function reader (file, delimiter)
    local f = io.open(file)
    for line in f:lines() do
        lines[count] = splitty(line, delimiter)
        count = count + 1;
    end
end

(此部分还包含分隔符的第一部分)

但在实际环境中,数据库程序会立即将文件移动到另一个目录,并更改名称,例如:

$30$15$2016$09$26$13$27$24$444Z$.Pal.INV.csv

现在我知道目录, 但我无法准确预测名称,所以我想知道是否有一种方法可以在不知道文件名的情况下打开文件。(并在读取后删除它们)

我曾考虑过使用修改后的链接:

local inputFile = "D:\\Directory\\(*all)"

但它失败了。

其他可用信息: 该系统目前仅计划在 Windows 个人电脑上使用。 该目录始终只包含需要读取的一个文件,没有其他文件。

点赞
用户1381216
用户1381216

你可以使用 LuaFileSystem 的 lfs.dir 迭代器来遍历目录的内容。下面是一个小例子:

local lfs = require("lfs")

local path = "D:\\Directory\\" -- 在此处填写目录路径。
for filename in lfs.dir(path) do
    print(filename) -- 处理 filename,我只是打印了它
end

如果您记下文件,您将能够知道哪一个是新文件。如果只有一个文件,那么将更容易,您可以使用 string 函数检查其扩展名。据我所记,迭代器包括 ...可以在此处找到 lfs 文档。

2016-09-26 17:07:58
用户1847592
用户1847592
- 目录名和文件名应仅由 ASCII-7 位字符组成
local dir = [[C:\Temp\New Folder]]
local file = io.popen('dir /b/s/a-d "'..dir..'" 2>nul:'):read"*a":match"%C+"
if not file then
   error"此目录中没有文件"
end
- 打印该目录中第一个文件的文件名
print(file)  --> C:\Temp\New Folder\New Text Document.txt
2016-09-26 19:19:46