读取长文件
你会想到的一个问题是,使用readBinaryFile程序读取长文件时会返回一个极大的byteList
变量,占用许多内存。假如我们知道哪部分数据是我们想要的,可以这样作轻微的修改。
on readBinaryFile filePath, startByte, endByte
-- Optional parameters for specifying positions in the file
byteList = []
fileObj = new(xtra "fileIO")
fileObj.openFile(filePath, 1)
if fileObj.status() = 0 then
fileLength = fileObj.getLength()
if startByte.voidP then
-- Read entire file if parameters aren't supplied
startByte = 1
endByte = fileLength
end if
if (fileLength >= startByte) and (fileLength >= endByte) then
fileObj.setPosition(startByte-1)
-- Position FileIO to read from the correct point in the file
repeat with index = startByte to endByte
byteList.append(charToNum(fileObj.readChar()))
end repeat
end if
end if
fileObj.closeFile()
fileObj = 0
return byteList
end
|