Sample code for 30+ languages & platforms
Xojo Plugin

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 Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

//  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.

Dim ftp As New Chilkat.Ftp2

ftp.Hostname = "ftp.example.com"
ftp.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.
ftp.Password = "myPassword"

success = ftp.Connect()
If (success = False) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If

success = ftp.ChangeRemoteDir("public_html")
If (success = False) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If

//  GetDirCount retrieves the directory listing on the first call and returns the number of
//  entries.  A negative return indicates failure.
Dim n As Int32
n = ftp.GetDirCount()
If (n < 0) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If

Dim i As Int32
For i = 0 To n - 1
    Dim name As String
    name = ftp.GetFilename(i)
    If (ftp.GetIsDirectory(i)) Then
        System.DebugLog("[DIR]  " + name)
    Else
        System.DebugLog("       " + name)
    End If

Next

success = ftp.Disconnect()
If (success = False) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If