Retrieving/Picking files from Directory through X++

Retrieving/Picking files from Directory through X++

MCP · Azure DevOpsYour delivery board, readable by an agentMCP · DataverseOne consent, and the data layer opensMCP · Dynamics 365 F&OConnecting F&O to an agent Microsoft hasn’t documented
Following piece of code to pick all files from a directory.


static void readFromDirectory(Args _args)
{
    #Evat_NL
    #File
   
    // variable declration to retrieve files from folder
    Filename            baseFolder;
    Filename            pdfFilename;
    Filename            foundBaseFileName;
    Filename            foundFileName;
   
    container           mainFolder, subFolder, fileContainer;
    boolean             filesFoundMainFolder = true;
    boolean             filesFoundSubFolder = true;
   
    int                 apiResult;   
    int                 startTime, endTime, fileCounter;
   
    RecordInsertList    recordList = null;

    int setCurrentFolder (Filename _filename = '')
    {
        ;
        return WinAPI::setCurrentDirectory(_filename);
    }
    ;  
   
    baseFolder = @"C:\Test\invoices\"; // Reading all pdf invoices from a directory

    apiResult           = setCurrentFolder(SysTreeNode::duplicatePathDelimiters(baseFolder));
    mainFolder          = WinAPI::findFirstFile("*.pdf*");
    foundBaseFileName   = conpeek(mainFolder, 2);   

    startTime = WinAPI::getTickCount();

    while (filesFoundMainFolder)
    {
        if (foundBaseFileName != #currentFolder && 
            foundBaseFileName != #upFolder && 
            foundBaseFileName != '')
        {
            // Concatenating each file with base folder to get full path
            // For example; C:\Test\invoices\Invoice1.pdf
            pdfFilename = baseFolder + foundBaseFileName;

            fileCounter++;
        }
        apiResult            = setCurrentFolder(SysTreeNode::duplicatePathDelimiters(baseFolder));
        foundBaseFileName    = WinAPI::findNextFile(conpeek(mainFolder, 1));
        filesFoundMainFolder = foundBaseFileName ? true : false;
    }

    endTime = WinAPI::getTickCount();

    info(strFmt('It took %1 minutes to read %2 pdf files', ((endTime - startTime)/1000)/60, fileCounter));
}
Previous article← Tool to copy security permissions in AX
Discussion

Ask a question or leave feedback

This is a review interaction. The WordPress version will store, thread and moderate comments.

Thanks — submitted for moderation in this review.
Search the whole site · Ctrl/⌘ + K