2

我正在编写一个供个人使用的 Lua 5.1 脚本,旨在通过 Lua 解释器作为独立程序运行。我需要包含一个将创建一个新子文件夹的函数(其中“mainfolder”包含脚本和一个名为“season”的文件夹,新文件夹被创建为“season”的子文件夹),然后编写返回的文本字符串新文件夹中的新文本文件的另一个功能。这是在 Windows 8 上。由于我通常不擅长解释事情,这里有一些伪代码来说明:

function makeFiles()
    createfolder( ".\season\week1" )
    newFile = createFile( ".\season\week1\game.txt" )
    newFile:write( funcThatReturnsAString() )
    newFile:close()
end

我知道如何打开和写入与脚本相同的文件夹中的现有文件,但我不知道如何 1)创建子文件夹,以及 2)创建一个新文件。我该怎么做呢?

4

3 回答 3

4

要创建文件夹,您可以使用os.execute()调用。对于文件写入,一个简单io.open()的工作就可以完成:

function makeFiles()
    os.execute( "mkdir season\\week1" )
    newFile = io.open( "season\\week1\\game.txt", "w+" )
    newFile:write( funcThatReturnsAString() )
    newFile:close()
end

编辑

在 Windows 中,您需要\\对路径使用双反斜杠 ( )。

于 2013-04-16T05:56:28.427 回答
4

os.execute有效,但应尽可能避免,因为它不可移植。LuaFileSystem库就是为此目的而存在的。

于 2013-04-16T08:45:41.583 回答
0
function myCommandFunction(playerid, text)
    if(string.sub(text, 1, 5) == "/save") then
        local aName = getPlayerName(playerid)
        os.execute( "mkdir filterscripts\\account" )
        file = io.open(string.format("filterscripts\\account\\%s.txt", aName), "w")
        file:write(string.format("Name: %s", aName))
        file:close()
    end
end
registerEvent("myCommandFunction", "onPlayerCommand")

基本:为游戏创建帐户(示例)

于 2020-07-04T10:47:10.953 回答