We can use File data type to handle text types. Besides the copying, deleting, and handling files operations, it allows us to manage the content of text files (read or write the text in one step or do it by line).
It is quite useful for scenarios where the file content must be dumped directly into a memory variable, or in the case of writing a log file with the content of a string variable.
Below are the methods available for File data type meant for reading or writing text files.
The following methods are for reading or writing text files. The operation is done in one step: with the open file, contents are dumped into memory, and then the file is closed. This is very useful for small files. For the case of files of many kbytes, looping and reading each line is more recommended.
Method |
Description |
ReadAllText([encoding]):String |
Opens a text file, reads all lines in the file, and closes the file, using the optionally specified encoding (UTF-8 when not specified). |
ReadAllLines([encoding]):StringCollection |
Opens a text file, reads all lines in the file, and closes the file. Each item in the collection is a line from the file, using the optionally specified encoding (UTF-8 when not specified). The value returned is a Character Collection. |
WriteAllText(String[, encoding]) |
Opens the file, writes the string specific to the file, and closes the file. If the file has content, it is overwritten, using the optionally specified encoding (UTF-8 when not specified). |
WriteAllLines(StringCollection[, encoding]) |
Opens the file, writes the string collection specific for the file, each string followed by a line terminator, and closes the file. If the file has content, it is overwritten, using the optionally specified encoding (UTF-8 when not specified). |
AppendAllText(String[, encoding]) |
Opens the file, appends the specified string to the file, and closes the file, using the optionally specified encoding (UTF-8 when not specified). |
AppendAllLines(StringCollection[, encoding]) |
Opens the file, appends the specified string collection to the file, each string followed by a line terminator, and closes the file, using the optionally specified encoding (UTF-8 when not specified). |
In this example we search for files with html extension and load their contents in the database. To scan the files we use a variable &File (based on File data type), and a variable &Directory (based on Directory data type), and then use the ReadAllText method to dump the content of the file into the database.
For &File in &Directory.GetFiles("*.html")
New
ContentHtml = &File.ReadAllText()
EndNew
EndFor
In this example we write a log file with data from a Business Component.
&LogLines = new() //&LogLines is a string collection.
&LogLines.Add(Format("[%1] Error updating Customer", Now()))
&LogLines.Add(&CustomerBC.ToJson())
&LogFile.AppendAllLines(&LogLines) //&LogFile is File Data Type.
The following methods are applied for reading or writing a file by lines.
Method |
Description |
ReadLine():String |
Reads a line of characters from the file. The string returned does not contain the terminating carriage return or line feed. The file must be opened before using this method (using OpenRead or Open method). |
WriteLine(String) |
Writes the specified string followed by a line terminator. The file must be opened before using this method (using OpenWrite or Open method). |
In this case the file must be opened prior to the operation. Following is a detail of the methods to be used for opening the file.
Method |
Description |
Open([encoding]) |
Opens a file for read/write access, using the optionally specified encoding (UTF-8 when not specified). If the file exists, the content to write is appended to the file. Otherwise, a new file is created. |
OpenWrite([encoding]) |
Opens a file for write access in order to append content, or creates a new file when one does not exist, using the optionally specified encoding (UTF-8 when not specified). |
OpenRead([encoding]) |
Opens a file for read access, using the optionally specified encoding (UTF-8 when not specified). |
Method |
Description |
Create() |
Creates a text file in the path specified in the Source property. The file is not opened.
If the file already exists, it sets ErrCode = 1 and the file is not created nor truncated.
|
Close() |
Closes the file. |
Properties
Name |
Description |
EOF |
True if the end of the file has been reached. Before using this property, the file must be opened for reading. |
Processing a file by lines.
&File.Source = "C:\Files\Data.txt" //&File is File Data Type.
&File.OpenRead()
do while not &File.EOF
ProcessLine(&File.ReadLine())
enddo
&File.Close()
The following methods allow to return and load a SDT or an XML variable from the contents of a file into this format (json or xml).
Method |
Description |
FromJsonFile(File)
|
Opens a JSON file, parses its content, loads the SDT, and closes the file. |
FromXMLFile(File) |
Opens a XML file, parses its content, loads the SDT, and closes the file. |
Example IV
In the following example the file content is in json format, and it is compatible with the structure of CustomerSDT SDT.
&File.Source = "C:\Files\data.json" //&File is File Data Type
&CustomerSDT.FromJsonFile(&File) //&CustomerSDT is a SDT variable
Genexus Tilo RC (X Ev3)
These methods run in Offline Native Mobile Applications.
File data type
Directory data type