Microsoft_MVP_banner

AX 2012: Reading files from directory through X++

Following code can be used to read files from the specified path. With this example, I am reading a CSV files from a directory. Class declaration class readFilesFromDirectory extends RunBase {     FilePath            filePath;     Filename            filename;     CommaTextIo         fileIO;     Set                 fileSet;     CommaIo             commaIo;     str                 currentFile;     container           lineCon;     #File     #AviFiles } main method Public static void main(Args _args) {     readFilesFromDirectory  readFiles = readFilesFromDirectory::construct();     readFiles.readFilesFromDirtecory(); } Construct Public static readFilesFromDirectory construct() {     return new readFilesFromDirectory(); } readFileFromDirectory method private void readFilesFromDirtecory() {     SetEnumerator           sE;     int                     row = 1;     filePath = @”C:TempFilesToRead”;     this.getFiles();     sE = fileSet.getEnumerator();     while (sE.moveNext()) // loop through all files     {         filename = sE.current();         this.openFile();         while(this.readLine()) // loop through all lines from current file         {             this.processRow(row, lineCon);             row++;         }     } } getFiles method private void getFiles() {     System.String[]                 files;     System.Collections.IEnumerator  enumerator;     str file;     try     {         fileSet = new Set(Types::Container);         files = System.IO.Directory::GetFiles(filePath, ‘*.csv’);         enumerator = files.GetEnumerator();         while (enumerator.MoveNext())         {             file = enumerator.get_Current();             fileSet.add([file]);         }     }     catch (Exception::Internal)     {         this.processCLRErrorException();     }     catch (Exception::CLRError)     {         this.processCLRErrorException();     } } openFile method private void openFile() {     FileIOPermission fileIOPermission;     fileIOPermission = new FileIOPermission(filename, #io_read);     fileIOPermission.assert();     commaIo = new CommaIo(filename, #io_read);     if (commaIo && commaIo.status() == IO_Status::Ok)     {         commaIo.inRecordDelimiter(#delimiterCRLF);     }     else     {         throw error(strFmt(“Error when opening file %1”, filename));     } } readLine method private boolean readLine() {     boolean readLine;     if (commaIo && commaIo.status() == IO_Status::Ok)     {         lineCon = commaIo.read();         readLine = lineCon != conNull();     }     else     {         lineCon = conNull();         readLine = false;     }     return readLine; } processRow method private void processRow(int _rowIdx, container  _row) {     //conpeek(_row, 1);     //conpeek(_row, 2);     //conpeek(_row, 3);     //conpeek(_row, 4);     //conpeek(_row, 5);     //conpeek(_row, 6);     //conpeek(_row, 7);     //conpeek(_row, 8);     //conpeek(_row, 9);     //conpeek(_row, 10); } processCLRErrorException method private void processCLRErrorException(     boolean _throw = true     ) {     str strError;     CLRObject exc;     CLRObject innerExc;     CLRObject clrExcMessage;     exc = CLRInterop::getLastException();     if (exc)     {         clrExcMessage = exc.get_Message();         innerExc = exc.get_InnerException();         while (innerExc != null)         {             clrExcMessage = innerExc.get_Message();             innerExc = innerExc.get_InnerException();         }         strError = CLRInterop::getAnyTypeForObject(clrExcMessage);         error(strError);         if (_throw)         {             throw error(“Update has been cancelled”);         }     } }

FaisalFareed@2025. All rights reserved

Design by T3chDesigns