Create Directory Listing of Files In App Engine

Need to know dynamically which files are in a given folder?

This code will allow you to list all of the files in a given directory, then allow you to open each file.  It could be useful to read which files have been recently added to an upload folder.  I used this code to read which files had recently been placed in the process scheduler working folder (first SQLExec in code example).

Details:  We run a system command to get a directory listing, and we send that output to a new file, in the same directory.  Then we open that new file and review which files were found.

/*Setup the Slash variable*/
If &OS = "Windows" Then
    &slash = "\";
else
    &slash = "/";
End-if;
/*Get the current working folder - You may want to use a static folder where files are being uploaded to - If you use this SQLExec, process instance &ProcInst*/
SQLExec("SELECT PRCSOUTPUTDIR FROM PSPRCSPARMS WHERE PRCSINSTANCE = :1", &ProcInst, &DirectoryLocation);

/*Setup the filename to output to.*/
&DirectoryFileName = "FileListing_" | &ProcInst | ".filelisting";

/*Setup the folder to write the file to*/
&DirectoryListing = &DirectoryLocation | &slash | &DirectoryFileName;

If &OS = "Windows" Then
    &CMD_TO_RUN = "cmd.exe /c dir """ | &DirectoryLocation | """ /b > """ | &DirectoryListing | """";
Else
    &CMD_TO_RUN = "ls """ | &DirectoryLocation | """ > """ | &DirectoryListing | """";
End-If;

/*It is always best to Commit the work before running Exec*/
CommitWork();
try
    &return_value = Exec(&CMD_TO_RUN, %Exec_Synchronous + %FilePath_Absolute);
catch Exception &e
    MessageBox(0, "", 0, 0, "Error Found. Exception is " | &e | " with return value " | &return_value);
    MessageBox(0, "", 0, 0, "Command sent was " | &CMD_TO_RUN);
    MessageBox(0, "", 0, 0, "Going to Next step in App Engine.");
end-try;

Local File &f1, &f2;
&f1 = GetFile(&DirectoryListing, "r", %FilePath_Absolute);
While &f1.ReadLine(&RowOfData);
/*Skip the file if the filename matches our Directory File name*/
    If &RowOfData <> &DirectoryFileName Then
        MessageBox(0, "", 0, 0, "Processing Filename " | &RowOfData);
        &Columns_array = Split(&RowOfData, "."); /*Useful to read the file extension. Use variable Upper(&Columns_array [2])*/
        &f2 = GetFile(&DirectoryLocation | &slash | &RowOfData, "r", %FilePath_Absolute);
        While &f2.ReadLine(&F2RowOfData);
            /*Process the row of data, using variable &F2RowOfData*/
        End-While;
    End-If;
End-While;

&f1.Close();

↑ Back to top

Leave a Comment

Yay! You've decided to leave a comment. That's fantastic! Please keep in mind that comments are moderated and rel="nofollow" is in use. So, please do not use a spammy keyword or a domain as your name, or else it will be deleted. Let's have a personal and meaningful conversation instead. Thanks for dropping by! Your email address will not be published.