MineOS/lib/files.lua
2016-05-22 20:18:11 +03:00

71 lines
1.9 KiB
Lua

local filesystem = require("filesystem")
local serialization = require("serialization")
local files = {}
----------------------------------------------------------------------------------------------------------------------------
function files.loadTableFromFile(path)
local file = io.open(path, "r")
local data = serialization.unserialize(file:read("*a"))
file:close()
return data
end
function files.saveTableToFile(path, tableToSave)
filesystem.makeDirectory(filesystem.path(path) or "")
local file = io.open(path, "w")
file:write(serialization.serialize(tableToSave))
file:close()
end
-- Открыть файл для чтения в байтном режиме
function files.openForReadingBytes(path)
local myFileStream = {}
myFileStream.luaFileStream = io.open(path, "rb")
function myFileStream.read(count)
return myFileStream.luaFileStream:read(count)
end
function myFileStream.readByteAsString()
return myFileStream.luaFileStream:read(1)
end
function myFileStream.readByteAsDec()
local readedByte = myFileStream.luaFileStream:read(1)
if readedByte then return string.byte(readedByte) else return nil end
end
function myFileStream.readByteAsHex()
local readedByte = myFileStream.luaFileStream:read(1)
if readedByte then return string.format("%02X", string.byte(readedByte)) else return nil end
end
function myFileStream.readByteAsDecimal()
return myFileStream.readByteAsDec()
end
function myFileStream.readByteAsHexadecimal()
return myFileStream.readByteAsHex()
end
function myFileStream.close()
myFileStream.luaFileStream:close()
end
return myFileStream
end
----------------------------------------------------------------------------------------------------------------------------
-- ecs.prepareToExit()
-- local file = files.open("test.txt", "rb")
-- for i = 1, 100 do
-- print(file.readByteAsHex())
-- end
-- file:close()
return files