Sample code for 30+ languages & platforms
PureBasic

Get FTP Directory Listing Information

See more FTP Examples

_LANGUAGE_ example showing how to get information about files and subdirectories in the current remote FTP directory.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkFtp2.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    ftp.i = CkFtp2::ckCreate()
    If ftp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkFtp2::setCkHostname(ftp, "ftp.example.com")
    CkFtp2::setCkUsername(ftp, "login")
    CkFtp2::setCkPassword(ftp, "password")

    ; Connect and login to the FTP server.
    success = CkFtp2::ckConnect(ftp)
    If success <> 1
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    ; The ListPattern property is our directory listing filter.
    ; The default value is "*", which includes everything.
    Debug CkFtp2::ckListPattern(ftp)

    ; To get file and sub-directory information, simply
    ; loop from 0 to ftp.GetDirCount() - 1
    i.i
    n.i
    n = CkFtp2::ckGetDirCount(ftp)
    If n < 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    If n > 0
        For i = 0 To n - 1

            ; Display the filename
            Debug CkFtp2::ckGetFilename(ftp,i)

            ; Display the file size (in bytes)
            Debug Str(CkFtp2::ckGetSize(ftp,i))

            ; Is this a sub-directory?
            If CkFtp2::ckGetIsDirectory(ftp,i) = 1
                Debug ".. this is a sub-directory"
            EndIf

            Debug "--"
        Next
    EndIf

    Debug "-----------------------------------"

    ; Only files and directories
    ; matching the ListPattern are returned.
    CkFtp2::setCkListPattern(ftp, "*.asp")
    n = CkFtp2::ckGetDirCount(ftp)
    If n < 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    If n > 0
        For i = 0 To n - 1

            ; Display the filename
            Debug CkFtp2::ckGetFilename(ftp,i)

            ; Display the file size (in bytes)
            Debug Str(CkFtp2::ckGetSize(ftp,i))

            Debug "--"
        Next
    EndIf

    success = CkFtp2::ckDisconnect(ftp)


    CkFtp2::ckDispose(ftp)


    ProcedureReturn
EndProcedure