Sample code for 30+ languages & platforms
Visual FoxPro

Check if a Remote File or Directory Exists

See more SFTP Examples

Demonstrates the Chilkat SFtp.FileExists method, which checks a remote path and returns an integer describing what is there. The first argument is the remote path and the second (followLinks) selects whether a symbolic link is followed to its target. The return value is -1 on error, 0 if nothing exists, 1 for a file, 2 for a directory, 3 for a symbolic link, and higher values for special entry types.

Background: This returns more than a yes/no because "does it exist" usually comes with "and is it the kind of thing I expect" — a job that means to write a file should notice if a directory already occupies the path. The followLinks flag decides whether a symbolic link is reported as a link (3, only when not following) or transparently resolved to its target's type. Always handle the -1 case: it means the check itself failed, which is different from the path not existing.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSftp
LOCAL lnPort
LOCAL lcPassword
LOCAL lnFollowLinks
LOCAL lnResult

lnSuccess = 0

*  Demonstrates the SFtp.FileExists method, which checks a remote path and returns an integer
*  describing what is there.  The 1st argument is the remote path and the 2nd (followLinks)
*  selects whether a symbolic link is followed to its target.

loSftp = CreateObject('Chilkat.SFtp')

*  Connect, authenticate, and initialize the SFTP subsystem.
lnPort = 22
lnSuccess = loSftp.Connect("sftp.example.com",lnPort)
IF (lnSuccess = 0) THEN
    ? loSftp.LastErrorText
    RELEASE loSftp
    CANCEL
ENDIF

*  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.
lcPassword = "mySshPassword"

lnSuccess = loSftp.AuthenticatePw("mySshLogin",lcPassword)
IF (lnSuccess = 0) THEN
    ? loSftp.LastErrorText
    RELEASE loSftp
    CANCEL
ENDIF

lnSuccess = loSftp.InitializeSftp()
IF (lnSuccess = 0) THEN
    ? loSftp.LastErrorText
    RELEASE loSftp
    CANCEL
ENDIF

*  When followLinks is 1, a symbolic link is followed and the target's type is returned.
lnFollowLinks = 1
lnResult = loSftp.FileExists("subdir/report.pdf",lnFollowLinks)

*  Interpret the return value.
IF (lnResult = -1) THEN
    ? loSftp.LastErrorText
    RELEASE loSftp
    CANCEL
ENDIF

IF (lnResult = 0) THEN
    ? "The path does not exist."
ENDIF

IF (lnResult = 1) THEN
    ? "A regular file exists."
ENDIF

IF (lnResult = 2) THEN
    ? "A directory exists."
ENDIF

*  Other possible values: 3 = symbolic link (only when followLinks is 0), 4 = special
*  entry, 5 = unknown, 6 = socket, 7 = character device, 8 = block device, 9 = FIFO.

loSftp.Disconnect()

RELEASE loSftp