逐个字符地读取文件到数组

时间:2016-05-09 16:13:26

标签: lua

我一直在寻找,如何将整个文件读入字符数组。我目前的代码:

function readWholeFile(fn)
  if(fn==nil) then 
    return nil 
  end
  local file = io.open(fn, "r")
  return file:read("*a")
end

我想要这个函数返回

{'s', 'o', 'm', 'e', 't', 'e', 'x', 't'}

而不是

"Sometext"

那怎么办呢?

2 个答案:

答案 0 :(得分:3)

按原样读取整个文件,并将内容字符串拆分为字符。这可以通过string库轻松完成。 e.g:

for c in content:gmatch(".") do

另一种可能的解决方案:

file:read支持多种格式,file:read("*a")是读取整个文件的方式。相反,每次使用file:read(1)读取一个字符,例如:

repeat
  local c = file:read(1)
  print(c)
until c == nil

答案 1 :(得分:0)

gmatch与模式一起工作,看起来有点矫枉过正IMHO,你需要的只是string.sub()

local text = readWholeFile("filename")
local t = {}
for i=1, #text do t[#t + 1] = text:sub(i,1) end