MTA:Eir/FileSystem/file/readInt
Jump to navigation
Jump to search
This function attempts to read an integer (native type) from a file and return it. The amount of bytes read should be four.
Syntax
int file:readInt ()
Returns
Returns an integer if it was successfully read from the file, false otherwise.
Example
Click to collapse [-]
ClientThis snippet demonstrates an encrypted Lua source code format.
-- Have some pieces of source code as samples.
local sourceSamples = {
[[print("Hello World!");]],
[[print("Ballas on the streets.");]],
[[return 1+1==0;]]
};
local function packSourceCode( theFile, sourceString )
-- Encrypt the source code.
local encryptedCode = teaEncode( sourceString );
-- Write the file header.
theFile:writeInt( #encryptedCode );
-- Write file contents.
theFile:write( encryptedCode );
end
local function unpackSourceCode( theFile )
-- Grab the source code from the file.
local encryptedLen = theFile:readInt();
-- Has the length been read correctly?
if not ( encryptedLen ) then
return false;
end
local encryptedSource = theFile:read( encryptedLen );
-- Make sure it has not been fragmented.
if not ( #encryptedSource == encryptedLen ) then
return false;
end
-- Decrypt the source code.
local sourceCode = teaDecode( encryptedSource );
-- Return it.
return sourceCode;
end
-- Attempt some encryption.
local theFile = fileCreate( "encryptedSource.lue" );
for m,n in ipairs( sourceSamples ) do
packSourceCode( theFile, n );
end
-- Get the original source code again.
theFile:seek( 0, "set" );
local unencryptedSources = {};
while ( true ) do
local code = unpackSourceCode( theFile );
if not ( code ) then break; end
table.insert( unencryptedSources, code );
end