Lua在写文件时出现错误

我有一个使用nodemcu固件的ESP8266模块,必须使用lua进行编程。我编写了一些代码来保存从html页面输入的用户名/密码凭据到文件中。

这是lua函数,它工作正常

   function parse_wifi_credentials(vars)
    if vars == nil or vars == "" then
        return false
    end

  local _, _, wifi_ssid = string.find(vars, "wifi_ssid\=([^&]+)")
  local _, _, wifi_password = string.find(vars, "wifi_password\=([^&]+)")

    if wifi_ssid == nil or wifi_ssid == "" or wifi_password == nil then
        return false
    end

    pwd_len = string.len(wifi_password)
    if pwd_len ~= 0 and (pwd_len < 8 or pwd_len > 64) then
        return false
    end

   file.open("credentials.txt", "a")
   file.write(wifi_ssid)
   file.write(wifi_password)
   file.flush()
   file.close()

    return true
end

它完全正常工作,但我的输出文件类似于

usernamepasswordotherusernameotherpassword

所以我像这样插入值来分隔字段

 file.write(wifi_ssid)
 file.write(":")
 file.write(wifi_password)

以及像这样的许多其他方式,但我的代码在ESP8266上不工作,因为我得到了不足的内存错误,但如果我没有打印:,我会得到大约10 kb的可用内存。

我还尝试了file.write(wifi_ssid, "\n"),它可以工作,但输出没有变化。

有人知道我应该做什么来在字段之间插入一个字符吗?

点赞
用户3082873
用户3082873

你需要使用

file.writeline(wifi_ssid)

来在文件行尾使用换行符。

为了确保文件打开不会因为垃圾内容导致内存耗尽问题,你可以先将其删除然后重新写入证书。

此外,在写入或刷新操作之后最好再运行一下 collectgarbage() 方法。

2016-11-21 16:58:07