Retrieving/Picking files from Directory through X++
Views (6993)
Following piece of code to pick all files from a directory.
static voidreadFromDirectory(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 = '')
{
;
returnWinAPI::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 != '')
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));
}
This was originally posted here.

Like
Report
*This post is locked for comments