我正在尝试从二进制文件中读取一个块。这样可以正常工作,但是,只要代码中有0x0A,Lua就会插入一个0x0D并将其转换为换行符,这会破坏文件。我怎么能防止这种情况?我检查了几个用于编写二进制文件的源代码,他们使用相同的io.write()函数。我还是Lua的新手,所以我可能会错过一些东西。这是我的代码:
file=io.open(filepath,'rb')
file:seek("set")
file:seek("cur",startoffset)
filecontent=file:read(endoffset-startoffset)
io.output(test.tmp)
io.write(filecontent)
答案 0 :(得分:3)
我检查了几个用于编写二进制文件的源代码,他们使用了相同的io.write()函数。
不,他们没有。他们使用file:write
。有区别。一个适用于给定的文件句柄。另一个工作在“默认输出文件”上,它始终以文本打开。
正确的Lua代码是你想要的:
local file = assert(io.open(filepath, "rb"), "Could not open file for reading.")
local filecontent = file:read("*a")
file:close()
file = assert(io.open("temp.tmp", "wb"), "Could not open file for writing.")
file:write(filecontent)
file:close()