如何在Lua中给出一个与平台无关的文件名,我如何获得目录路径

时间:2016-06-21 16:00:33

标签: lua

如果文件为/etc/haproxy/haproxy.cfg,则输出应为目录名/etc/haproxy

目前我正在使用

file = "/etc/haproxy/haproxy.cfg"
sep = "/"
file:match("(.*"..sep..")")

但它不是独立于平台的,并且在Windows上会失败,因为路径分隔符不同。那么使用lfs模块是否存在一种平台无关的实现方法?

2 个答案:

答案 0 :(得分:4)

package.config:sub(1,1)为您提供运行Lua的平台的路径分隔符。请参阅manual

答案 1 :(得分:2)

我不确定您是否要以独立于平台的方式解析路径或使用路径,但要解析您可以使用{ {1}}模式而不是[\\/],它将匹配不同类型的路径分隔符:

/

如果您想使用这些路径打开/访问文件,那么使用print(file:match("(.*[\\/])")) 作为路径分隔符将在Windows上使用Lua API。