Sample code for 30+ languages & platforms
Go

FTP Iterate over Files in Directory Matching ListPattern

See more RSA Examples

Uses the ListPattern property to iterate over the files in a directory matching the pattern.

Chilkat Go Downloads

Go
    success := false

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

    ftp := chilkat.NewFtp2()

    ftp.SetHostname("ftp.example.com")
    ftp.SetUsername("my_login")
    ftp.SetPassword("my_password")
    ftp.SetPort(21)
    ftp.SetAuthTls(true)

    success = ftp.Connect()
    if success != true {
        fmt.Println(ftp.LastErrorText())
        ftp.DisposeFtp2()
        return
    }

    // Change to the "images" sub-directory located under our FTP account's home directory.
    success = ftp.ChangeRemoteDir("images")
    if success != true {
        fmt.Println(ftp.LastErrorText())
        ftp.DisposeFtp2()
        return
    }

    ftp.SetListPattern("*.png")

    // Fetch the current remote directory contents by calling GetDirCount
    n := ftp.GetDirCount()
    if n < 0 {
        fmt.Println(ftp.LastErrorText())
        ftp.DisposeFtp2()
        return
    }

    i := 0
    var filename *string = new(string)
    sbLocalPath := chilkat.NewStringBuilder()

    for i < n {
        filename = ftp.GetFilename(i)
        fmt.Println(*filename)

        // Download this file.
        sbLocalPath.SetString("qa_output/")
        sbLocalPath.Append(*filename)
        success = ftp.GetFile(*filename,*sbLocalPath.GetAsString())
        if success != true {
            fmt.Println(ftp.LastErrorText())
            ftp.DisposeFtp2()
            sbLocalPath.DisposeStringBuilder()
            return
        }

        i = i + 1
    }


    ftp.DisposeFtp2()
    sbLocalPath.DisposeStringBuilder()