Performing File IO with the TextIo Class
Applies To: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
X++ code performs file input and output (IO) by using the TextIo class. TextIo uses Unicode.
X++ Sample
The following X++ job code sample creates a file and writes to it. Next the code reads from the file, and prints every record to the Infolog.
The use of the FileIOPermission class is also illustrated. FileIoPermission is used to assert that the current method has the authority to call another method that checks for such authority. For more information, see Code Access Security.
static void Job_File_IO_TextIo_Write_Read(Args _args)
{
TextIo txIoRead,
txIoWrite;
FileIOPermission fioPermission;
container containFromRead;
int xx,
iConLength;
str sTempPath,
sFileName = "Test_File_IO.txt",
sOneRecord;
;
// Get the temporary path.
sTempPath = WINAPI::getTempPath();
info("File is at: " + sTempPath + sFileName);
// Assert permission.
fioPermission = new FileIOPermission
(sTempPath + sFileName ,"RW");
fioPermission.assert();
// If the test file already exists, delete it.
if (WINAPI::fileExists(sFileName))
{
WINAPI::deleteFile(sTempPath + sFileName);
}
// Open a test file for writing.
// "W" mode overwrites existing content, or creates the file.
txIoWrite = new TextIo( sTempPath + sFileName ,"W");
// Write records to the file.
txIoWrite.write("Hello World.");
txIoWrite.write("The sky is blue.");
txIoWrite.write("");
txIoWrite.write("// EOFile");
// Close the test file.
txIoWrite = null;
// Open the same file for reading.
txIoRead = new TextIo(sTempPath + sFileName ,"R");
// Read the entire file into a container.
containFromRead = txIoRead.read();
// Loop through the container of file records.
while (containFromRead)
{
sOneRecord = "";
iConLength = conLen(containFromRead);
// Loop through the token in the current record.
for (xx=1; xx <= iConLength; xx++)
{
if (xx > 1) sOneRecord += " ";
sOneRecord += conPeek(containFromRead ,xx);
}
info(sOneRecord);
// Read the next record from the container.
containFromRead = txIoRead.read();
}
// Close the test file.
txIoRead = null;
// Delete the test file.
WINAPI::deleteFile(sTempPath + sFileName);
// revertAssert is not really necessary here,
// because the job (or method) is ending.
CodeAccessPermission::revertAssert();
}
X++ Sample Output
The following is the actual Infolog output.
Note
Several spaces between Hello and World are condensed to one space in the output. This occurs because the read method uses a string of one or more space characters as a delimiter of tokens, and only the tokens are put into the returned container.
Message (14:12:47)
File is at: C:\DOCUME~1\myalias\LOCALS~1\Temp\Test_File_IO.txt
Hello World.
The sky is blue.
// EOFile
See also
Microsoft Dynamics AX Class Overview
Announcements: New book: "Inside Microsoft Dynamics AX 2012 R3" now available. Get your copy at the MS Press Store.