Sample code for 30+ languages & platforms
PureBasic

SFTP Read Text File

See more SFTP Examples

Demonstrates how to open a text file on the SSH server and read text.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSFtp.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    ; Set some timeouts, in milliseconds:
    CkSFtp::setCkConnectTimeoutMs(sftp, 5000)
    CkSFtp::setCkIdleTimeoutMs(sftp, 15000)

    ; Connect to the SSH server.  
    ; The standard SSH port = 22
    ; The hostname may be a hostname or IP address.
    hostname.s = "sftp.example.com"
    port.i = 22
    success = CkSFtp::ckConnect(sftp,hostname,port)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Authenticate with the SSH server.  Chilkat SFTP supports
    ; both password-based authenication as well as public-key
    ; authentication.  This example uses password authenication.
    success = CkSFtp::ckAuthenticatePw(sftp,"myLogin","myPassword")
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; After authenticating, the SFTP subsystem must be initialized:
    success = CkSFtp::ckInitializeSftp(sftp)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Open a file for reading.
    handle.s
    handle = CkSFtp::ckOpenFile(sftp,"myTest.txt","readOnly","openExisting")
    If CkSFtp::ckLastMethodSuccess(sftp) <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Assume the file we are reading contains the following text:
    ; abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
    ; (in ANSI format -- i.e. one byte per char).

    ; Read 26 bytes:
    sText.s
    sText = CkSFtp::ckReadFileText(sftp,handle,26,"ansi")
    If CkSFtp::ckLastMethodSuccess(sftp) <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Should print "abcdefghijklmnopqrstuvwxyz"
    Debug sText

    ; Read the next 10 bytes.
    sText = CkSFtp::ckReadFileText(sftp,handle,10,"ansi")
    If CkSFtp::ckLastMethodSuccess(sftp) <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Should print "1234567890"
    Debug sText

    ; Read the next 26 bytes.
    sText = CkSFtp::ckReadFileText(sftp,handle,26,"ansi")
    If CkSFtp::ckLastMethodSuccess(sftp) <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Should print "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Debug sText

    ; Close the file.
    success = CkSFtp::ckCloseHandle(sftp,handle)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkSFtp::ckDispose(sftp)


    ProcedureReturn
EndProcedure