---
product: Chilkat
product_version: 11.7.0
language: ckperl
language_label: Perl
class: SFtpDir
class_name: CkSFtpDir
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/perlCkSFtpDirRef.html
---
# Chilkat SFtpDir — Perl — v11.7.0

> Chilkat 11.7.0 · language=ckperl · class=SFtpDir (CkSFtpDir)
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/SFtpDir.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/ckperl/guide.md`.

## Purpose

**Inspect, sort, and iterate an SFTP directory listing.**

`Chilkat.SFtpDir` represents a directory listing returned by an SFTP operation. It provides the original path used to fetch the listing, the number of files and subdirectories found, methods for retrieving filenames or full `SFtpFile` entry details by index, sorting support, and a way to load a completed asynchronous directory-listing result.

**Directory listing object**

Holds the files and subdirectories returned from an SFTP directory-read operation.

**Original path tracking**

Use `OriginalPath` to see the remote path that was requested when the directory listing was created.

**Entry count**

Read `NumFilesAndDirs` to determine how many directory entries are available for iteration.

**Filename access**

Use `GetFilename` to retrieve the name of an entry by zero-based index.

**Full entry details**

Use `FileAt` to populate an `SFtpFile` object with metadata for a selected file or subdirectory.

**Sorting and async results**

Sort entries by filename, timestamps, or size, and load directory listings returned from completed async tasks.

**Common pattern:** Use a `Chilkat.SFtp` object to open or read a remote directory, then use the returned `SFtpDir` object to inspect `NumFilesAndDirs`, optionally call `Sort`, and loop from index `0` through the final entry. Use `GetFilename` when only names are needed, or `FileAt` when the application needs the full `SFtpFile` metadata for each entry.

## Object creation, unlocking and error handling

**Object Creation**

```perl
$obj = chilkat::CkSFtpDir->new();
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Perl.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `# $strVal is a string # $ckStr is a CkString $sFtpDir->get_DebugLogFilePath($ckStr); $strVal = $sFtpDir->debugLogFilePath(); $sFtpDir->put_DebugLogFilePath($strVal);` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `# $strVal is a string # $ckStr is a CkString $sFtpDir->get_LastErrorHtml($ckStr); $strVal = $sFtpDir->lastErrorHtml();` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `# $strVal is a string # $ckStr is a CkString $sFtpDir->get_LastErrorText($ckStr); $strVal = $sFtpDir->lastErrorText();` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `# $strVal is a string # $ckStr is a CkString $sFtpDir->get_LastErrorXml($ckStr); $strVal = $sFtpDir->lastErrorXml();` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `# $boolVal is a boolean $boolVal = $sFtpDir->get_LastMethodSuccess(); $sFtpDir->put_LastMethodSuccess($boolVal);` | read/write | Indicates the success or failure of the most recent method call: `1` means success, `0` means failure. |
| `Utf8` | `# $boolVal is a boolean $boolVal = $sFtpDir->get_Utf8(); $sFtpDir->put_Utf8($boolVal);` | read/write | When set to `1`, all `string` arguments and return values are interpreted as UTF-8 strings. |
| `VerboseLogging` | `# $boolVal is a boolean $boolVal = $sFtpDir->get_VerboseLogging(); $sFtpDir->put_VerboseLogging($boolVal);` | read/write | If set to `1`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `# $strVal is a string # $ckStr is a CkString $sFtpDir->get_Version($ckStr); $strVal = $sFtpDir->version();` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `NumFilesAndDirs` | property, read-only | `# $intVal is an integer $intVal = $sFtpDir->get_NumFilesAndDirs();` |
| `OriginalPath` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpDir->get_OriginalPath($ckStr); $strVal = $sFtpDir->originalPath();` |
| `FileAt` | method | `# $index is an integer # $fileObj is a CkSFtpFile $status = $sFtpDir->FileAt($index, $fileObj);` |
| `GetFilename` | method | `# $index is an integer # $outStr is a CkString (output) $status = $sFtpDir->GetFilename($index, $outStr); $retStr = $sFtpDir->getFilename($index);` |
| `LoadTaskResult` | method | `# $task is a CkTask $status = $sFtpDir->LoadTaskResult($task);` |
| `Sort` | method | `# $field is a string # $ascending is a boolean $sFtpDir->Sort($field, $ascending);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### SFtpDir.NumFilesAndDirs

`Chilkat 11.7.0 · ckperl · SFtpDir · NumFilesAndDirs · property · read-only`

```perl
# $intVal is an integer

$intVal = $sFtpDir->get_NumFilesAndDirs();
```

Returns the number of entries in this directory listing.

The count includes every item returned by the server, such as regular files, directories, symbolic links, and special entries. Valid zero-based indexes range from `0` through `NumFilesAndDirs - 1`.

### SFtpDir.OriginalPath

`Chilkat 11.7.0 · ckperl · SFtpDir · OriginalPath · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpDir->get_OriginalPath($ckStr);

$strVal = $sFtpDir->originalPath();
```

Returns the original remote path used to create this directory listing.

This is the same path string that was supplied to the SFTP directory-open operation. It identifies the requested directory and is retained with the listing for later reference.

## Methods

### SFtpDir.FileAt

`Chilkat 11.7.0 · ckperl · SFtpDir · FileAt · method · since 11.0.0`

```perl
# $index is an integer

# $fileObj is a CkSFtpFile

$status = $sFtpDir->FileAt($index, $fileObj);
```

Copies the metadata for the directory entry at the zero-based `index` into `fileObj`.

The first entry is at index `0`. Use `NumFilesAndDirs` to determine the number of available entries.

The populated `SFtpFile` object provides the entry name, type, size, timestamps, ownership, permissions, and any additional attributes supplied by the SFTP server.

Use `GetFilename` when only the entry name is needed.

Returns 1 for success, 0 for failure.

### SFtpDir.GetFilename

`Chilkat 11.7.0 · ckperl · SFtpDir · GetFilename · method`

```perl
# $index is an integer

# $outStr is a CkString (output)

$status = $sFtpDir->GetFilename($index, $outStr);

$retStr = $sFtpDir->getFilename($index);
```

Returns the filename of the directory entry at the zero-based `index`.

The first entry is at index `0`. Use `NumFilesAndDirs` to determine the number of available entries.

Use `FileAt` when the application needs the full `SFtpFile` metadata rather than only the entry name.

Returns 1 for success, 0 for failure.

### SFtpDir.LoadTaskResult

`Chilkat 11.7.0 · ckperl · SFtpDir · LoadTaskResult · method · since 9.5.0.52`

```perl
# $task is a CkTask

$status = $sFtpDir->LoadTaskResult($task);
```

Loads this `SFtpDir` object from the result of a completed asynchronous `Task`.

The task must represent an asynchronous SFTP operation whose result is a directory listing. Call this method after the task has finished to transfer the listing data into the current object.

Returns 1 for success, 0 for failure.

### SFtpDir.Sort

`Chilkat 11.7.0 · ckperl · SFtpDir · Sort · method · since 9.5.0.79`

```perl
# $field is a string

# $ascending is a boolean

$sFtpDir->Sort($field, $ascending);
```

Reorders the files and subdirectories in this listing according to `field`.

Set `ascending` to `1` for ascending order or `0` for descending order. The new order is used by index-based methods such as `GetFilename` and `FileAt`.

| field | Sort key |
| :--- | :--- |
| `filename` | Filename using the normal case-sensitive comparison. |
| `filenameNoCase` | Filename using a case-insensitive comparison. |
| `lastModifiedTime` | Last-modified date and time. |
| `lastAccessTime` | Last-access date and time. |
| `lastCreateTime` | Creation date and time. |
| `size` | Entry size in bytes. |

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `GetFileObject` | method | before 11.6.1 | `FileAt` |

## Related classes

[`SFtpFile`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/ckperl/classes/SFtpFile.md), [`Task`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/ckperl/classes/Task.md)

