【发布时间】:2016-08-21 06:41:35
【问题描述】:
我一直在寻找这个问题的答案,每个人的答案都是一行一行的做,但问题是我的文件都是一行字符,并试图 io.open("file.txt" , "rb"):read("*a") 导致内存错误。我想不出如何一次加载它的一部分,因为就像我说的那样,它都是一条巨大的线。
【问题讨论】:
-
使用
:read(4096)或类似的方式读取固定大小的块怎么样? -
这与 string.sub 的工作原理是否基本相同,但用于读取文件,如果是的话,这正是我所需要的。
-
不一样,因为它自己按顺序读取。与
:seek("set", start)协同工作,您可以对文件执行与字符串上的.sub相同的操作。 -
在 any 编程语言中,您必须先将
seek移动到文件中的某个位置,然后read一定数量的bytes。 数据不被认为是“一个字符串”,本身,而只是一个字节块。 (据我所知,Lua 不支持“内存映射文件”的概念。) -
你能给我举个例子吗,比如假设文件有 1000 个字符长(它不是,它更长,这就是我需要使用它的原因)我怎样才能只抓取 500 到 750 个字符