2

如何从 PC 上的服务器读取和保存数据?

 a=io.open(path.."/datafile","wb")
 a:write("nonsense")
 a:close()

它是相同的方式还是其他方式?我想从我的服务器读取保存此文件到我的 PC,但我该怎么做呢?我希望有一个人可以帮助我

4

1 回答 1

1

目前尚不清楚您要做什么。如果要将文件从一台机器复制到另一台机器,以下是一种方法。请注意,它将通过在将整个文件内容复制到目标之前将整个文件内容读入内存来工作,因此它不适合非常大的文件,例如 >~100MB (YMMV)。

local SOURCE_PATH = "my/source/path/datafile.txt"
local DESTINATION_PATH = "another/path/datafile.txt"

local fh = assert( io.open( SOURCE_PATH, "rb" ) )
local content = fh:read "*all"
fh:close()

local fh_out = assert( io.open( DESTINATION_PATH, "wb" ) )
fh_out:write( content )
fh_out:close()

编辑

根据@lhf 的建议,这里有一个可以处理大文件的版本。它以小块读取然后写入文件:

local SOURCE_PATH = "my/source/path/datafile.txt"
local DESTINATION_PATH = "another/path/datafile.txt"
local BUFFER_SIZE = 4096   -- in bytes

local fh = assert( io.open( SOURCE_PATH, "rb" ) )
local fh_out = assert( io.open( DESTINATION_PATH, "wb" ) )

local data = fh:read( BUFFER_SIZE )
while data do
    fh_out:write( data )
    data = fh:read( BUFFER_SIZE )
end

fh:close()
fh_out:close()
于 2013-10-01T18:52:05.823 回答