【发布时间】:2013-12-15 19:45:06
【问题描述】:
我正在尝试使用 file:read 方法读取带有 CR 行结尾的文件,该方法似乎由于某种原因而起作用。文件内容如下:
ABCDEFGH
12345
##
6789
我希望它的行为与所有类型的行尾一致。每次我尝试读取文件时,它都会返回文件中的最后一行,并与前一行中的任何尾随字符连接起来,这些字符的位置大于最后一行中最后一个字符的位置。这就是我的意思:
> file=io.open("test.lua", "rb")
> function re_read(openFile)
openFile:seek("set");
return openFile:read("*a");
end
> =re_read(file) -- With CR
67895FGH
> =re_read(file) -- With CRLF
ABCDEFGH
12345
##
6789
> =re_read(file) -- with LF
ABCDEFGH
12345
##
6789
>
如您所见,返回的字符串是最后一个字符串加上前一行中的5 和第一行中的FGH。任何比最后一行短的行都会被跳过。
我的目标是使用file:line() 方法逐行读取文件。我希望如果找到file:read 的“修复”,那么它可以应用于file:lines()。
【问题讨论】:
-
尝试以文本模式打开文件:将
rb更改为r。 -
它仍然给我相同的结果。功能不是问题,它是 REPL(见 catwell 的回答)。
-
对不起,也不是repl,而是我对回车符的理解。
标签: file lua line-endings