Sample code for 30+ languages & platforms
Visual FoxPro

Check if an FTP Listing Entry is a Directory

See more FTP Examples

Demonstrates the Chilkat Ftp2.GetIsDirectory method, which returns whether a cached directory-listing entry is a directory. The only argument is a zero-based index. An invalid index returns false.

Background: Distinguishing directories from files is the first thing most listing code needs — to render a folder tree, to decide whether to recurse, or to apply different handling. This reads the type from the cached listing, so it is a local lookup rather than a server query. Reliability depends on the server's listing format conveying the type, which the common Unix and MLSD formats do.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loFtp
LOCAL n
LOCAL i
LOCAL lcName

lnSuccess = 0

*  Demonstrates the Ftp2.GetIsDirectory method, which returns whether a cached directory-listing
*  entry is a directory.  The only argument is a zero-based index into the current listing.

loFtp = CreateObject('Chilkat.Ftp2')

loFtp.Hostname = "ftp.example.com"
loFtp.Username = "myFtpLogin"

*  Normally you would not hard-code the password in source.  You should instead obtain it
*  from an interactive prompt, environment variable, or a secrets vault.
loFtp.Password = "myPassword"

lnSuccess = loFtp.Connect()
IF (lnSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

lnSuccess = loFtp.ChangeRemoteDir("public_html")
IF (lnSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

*  GetDirCount retrieves the directory listing on the first call and returns the number of
*  entries.  A negative return indicates failure.
n = loFtp.GetDirCount()
IF (n < 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

FOR i = 0 TO n - 1
    lcName = loFtp.GetFilename(i)
    IF (loFtp.GetIsDirectory(i)) THEN
        ? "[DIR]  " + lcName
    ELSE
        ? "       " + lcName
    ENDIF

NEXT

lnSuccess = loFtp.Disconnect()
IF (lnSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

RELEASE loFtp