如何在lua中访问并读写一个.txt文件

我认为标题已经解释了如何访问这些文件并读写它们? 这是我的代码

local openFile = assert(io.open(wasd_ ,"r"))  -- wasd_ 是我要打开的.txt文件
  local t = openFile:read("r") -- 读文件

我不确定在代码的第一行中是否应该用"wasd_"替换成"wasd_.txt"或文件路径(例如:用类似这个替换wasd_ --> C:/users/stuff/blah/thing/wasd_) 感谢任何帮助。

点赞
用户10953006
用户10953006

根据文档:

local Filename    = "wasd_.txt"
local File        = io.open(Filename, "r")
local FileContent = File:read("*all")

File:close()

该文件将根据当前目录 %CD% 打开。如果你的当前目录是 C:\test\,那么打开的文件将是 C:\test\wasd_.txt。如果你想要找到另一个文件,可以指定完整路径 C:\users\stuff\blah\thing\wasd_.txt

2020-11-01 04:39:36
用户3342050
用户3342050

逐行保留原文档,写入新文档

如果您想要一次执行所有操作,Lua 能够支持,但是一行一行进行编辑可以提供更多的控制性,因为它可以用于在特定行执行特定修改。此外,将操作结果写入新文件是_更安全的_,因为这样您仍然可以保留原始文件以进行比较,需要时可再试一次。

local path = 'C:/users/stuff/blah/thing/wasd_.txt'  -- wasd_ 是我想要打开的 .txt 文件
local newpath = path :sub( 1, -5 ) ..'new.txt'  --  C:/users/stuff/blah/thing/wasd_new.txt

local iput = assert( io.input( path ) )
local oput = assert( io.output( newpath ) )

local linenum = 0  --  用作计数器
while true do
    linenum = linenum +1
    local line = iput :read()
    if line == nil then break end  --  如果没有可读内容则退出循环

    local newline, _ = line :gsub( 'this', 'that' )  --  在这里进行修改
    if linenum == 1 then newline = 'HEADER: ' ..newline end  --  特定行编辑的示例

    oput :write( linenum ..'  ' ..newline ..'\n' )  --  read() 函数会剥离行末换行符,所以需要重新添加

end

iput :close()
oput :close()

如果没有必要,可以删除所有 linenum 实例,但是我强烈建议至少使用两个分别用于读取和写入的不同文件,直到您对其进行了适当的修改并且没有错误为止。

2020-11-01 06:58:53