CFile:Read
The Read method reads data from a CFile object in which the file was opened in binary mode ("rb"). This method can read 1 value or a table of values of a specified data type. The number of values to read is given by nCount. If nCount is not specified, then 1 value is read. However, reading a character string is a special case, as described below. Also see the ReadBswap method for reading data using a reversed byte order
nValue = CFile:Read( sDataType )
sString = CFile:Read( "str", nCount* )
nTable = CFile:Read( sDataType, nCount )
See Data Types for a description of the options for the sDataType parameter. The data type determines whether a value is returned as a number or a string:
"byte", "short", "ushort", "long", "float", and "double".
"rgb", "urgb", "lrgb", "frgb", and "drgb", and "str".
Reading a "str" value is a special case in which multiple values (characters) are not returned as a lua table. In addition, a string may be self-terminated by a null character or you can specify the number of characters to read. If you do not specify the nCount value, then Mira reads the string until the first null-character is read, which indicates the end of the string. If nCount is specified, then nCount characters will be returned unless a null-character is encountered first. If you want to read just one character, use Read("str",1). Do not use Read("byte") to read 1 character, since that returns a numeric value rather than a character.
The following script shows how to read values from the beginning of a raw 2-dimensional data file. The number of columns and rows are stored as 32-bit integer values at the beginning of the file, followed by the data as 32-bit float values. Assume the file named sFileName exists:
|
-- open the file and create a CFile object |
|
-- file was opened successfully |
|
-- read a 32-bit integer value |
|
-- read a 32-bit integer value |
|
-- read (nCols*nRows) values into a table |
|
|