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

> Chilkat 11.7.0 · language=ckperl · class=SFtpFile (CkSFtpFile)
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/SFtpFile.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 metadata for a file, directory, symlink, or special item in an SFTP listing.**

`Chilkat.SFtpFile` represents one entry returned from an SFTP directory listing. It exposes the entry name, file type, size, ownership, permissions, timestamps, and server-provided attribute flags such as hidden, read-only, archive, immutable, encrypted, compressed, sparse, append-only, system, and synchronization status. It is typically used together with `Chilkat.SFtpDir` when iterating a remote directory and deciding how each entry should be displayed, filtered, downloaded, skipped, or processed.

**Name and type**

Read `Filename` and `FileType`, or use convenience flags such as `IsRegular`, `IsDirectory`, and `IsSymLink`.

**File sizes**

Access the entry size as a 32-bit integer, 64-bit integer, or decimal string using `Size32`, `Size64`, or `SizeStr`.

**Timestamps**

Inspect creation, last-access, and last-modified times as date/time values or RFC822-formatted strings when supported by the server.

**Ownership**

Read numeric user and group IDs, and when the server supports it, textual owner and group names.

**Permissions**

Inspect the POSIX-style permissions bit mask for read, write, execute, set-user-ID, set-group-ID, and sticky-bit information.

**Extended attributes**

Check server-provided flags such as hidden, read-only, archive, immutable, encrypted, compressed, sparse, append-only, system, and sync.

**Common pattern:** Retrieve a directory listing with `Chilkat.SFtp`, iterate its `Chilkat.SFtpDir` entries, and populate a `Chilkat.SFtpFile` object for each item. Use the file type, timestamps, size, permissions, and attribute flags to decide whether the entry is a regular file, directory, symlink, or special item and how the application should handle it.

**Server-version note:** Some metadata is only available from newer SFTP protocol versions. For example, textual owner/group information and creation time require SFTP v4 or later, while many extended attribute flags such as read-only, archive, immutable, compressed, encrypted, sparse, append-only, and system require SFTP v6 or later.

## Object creation, unlocking and error handling

**Object Creation**

```perl
$obj = chilkat::CkSFtpFile->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 $sFtpFile->get_DebugLogFilePath($ckStr); $strVal = $sFtpFile->debugLogFilePath(); $sFtpFile->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 $sFtpFile->get_LastErrorHtml($ckStr); $strVal = $sFtpFile->lastErrorHtml();` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_LastErrorText($ckStr); $strVal = $sFtpFile->lastErrorText();` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_LastErrorXml($ckStr); $strVal = $sFtpFile->lastErrorXml();` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `# $boolVal is a boolean $boolVal = $sFtpFile->get_LastMethodSuccess(); $sFtpFile->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 = $sFtpFile->get_Utf8(); $sFtpFile->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 = $sFtpFile->get_VerboseLogging(); $sFtpFile->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 $sFtpFile->get_Version($ckStr); $strVal = $sFtpFile->version();` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `CreateTimeStr` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_CreateTimeStr($ckStr); $strVal = $sFtpFile->createTimeStr();` |
| `Filename` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_Filename($ckStr); $strVal = $sFtpFile->filename();` |
| `FileType` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_FileType($ckStr); $strVal = $sFtpFile->fileType();` |
| `Gid` | property, read-only | `# $intVal is an integer $intVal = $sFtpFile->get_Gid();` |
| `Group` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_Group($ckStr); $strVal = $sFtpFile->group();` |
| `IsAppendOnly` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsAppendOnly();` |
| `IsArchive` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsArchive();` |
| `IsCaseInsensitive` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsCaseInsensitive();` |
| `IsCompressed` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsCompressed();` |
| `IsDirectory` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsDirectory();` |
| `IsEncrypted` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsEncrypted();` |
| `IsHidden` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsHidden();` |
| `IsImmutable` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsImmutable();` |
| `IsReadOnly` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsReadOnly();` |
| `IsRegular` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsRegular();` |
| `IsSparse` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsSparse();` |
| `IsSymLink` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsSymLink();` |
| `IsSync` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsSync();` |
| `IsSystem` | property, read-only | `# $boolVal is a boolean $boolVal = $sFtpFile->get_IsSystem();` |
| `LastAccessTimeStr` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_LastAccessTimeStr($ckStr); $strVal = $sFtpFile->lastAccessTimeStr();` |
| `LastModifiedTimeStr` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_LastModifiedTimeStr($ckStr); $strVal = $sFtpFile->lastModifiedTimeStr();` |
| `Owner` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_Owner($ckStr); $strVal = $sFtpFile->owner();` |
| `Permissions` | property, read-only | `# $intVal is an integer $intVal = $sFtpFile->get_Permissions();` |
| `Size32` | property, read-only | `# $intVal is an integer $intVal = $sFtpFile->get_Size32();` |
| `Size64` | property, read-only | `# $int64Val is a 64-bit integer $int64Val = $sFtpFile->get_Size64();` |
| `SizeStr` | property, read-only | `# $strVal is a string # $ckStr is a CkString $sFtpFile->get_SizeStr($ckStr); $strVal = $sFtpFile->sizeStr();` |
| `Uid` | property, read-only | `# $intVal is an integer $intVal = $sFtpFile->get_Uid();` |

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

## Properties

### SFtpFile.CreateTimeStr

`Chilkat 11.7.0 · ckperl · SFtpFile · CreateTimeStr · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_CreateTimeStr($ckStr);

$strVal = $sFtpFile->createTimeStr();
```

Returns the file creation date and time as an RFC 822-formatted string, such as `Fri, 21 Nov 1997 09:55:06 -0600`.

**Server requirement:** Creation-time metadata is available only when the server supports SFTP version 4 or later and provides this attribute.

### SFtpFile.Filename

`Chilkat 11.7.0 · ckperl · SFtpFile · Filename · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_Filename($ckStr);

$strVal = $sFtpFile->filename();
```

Returns the name of the directory entry. Depending on the entry type, this may be a regular filename, directory name, symbolic-link name, or the name of another special filesystem object.

### SFtpFile.FileType

`Chilkat 11.7.0 · ckperl · SFtpFile · FileType · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_FileType($ckStr);

$strVal = $sFtpFile->fileType();
```

Identifies the type of directory entry. The returned value is one of the following:

| Value | Meaning |
| :--- | :--- |
| `regular` | A regular file. |
| `directory` | A directory. |
| `symLink` | A symbolic link. |
| `special` | A special file whose more specific type is not reported. |
| `unknown` | The type is unknown or was not provided by the server. |
| `socket` | A socket. |
| `charDevice` | A character device. |
| `blockDevice` | A block device. |
| `fifo` | A FIFO (named pipe). |

The convenience properties `IsRegular`, `IsDirectory`, and `IsSymLink` may be used for the most common entry types.

### SFtpFile.Gid

`Chilkat 11.7.0 · ckperl · SFtpFile · Gid · property · read-only`

```perl
# $intVal is an integer

$intVal = $sFtpFile->get_Gid();
```

Returns the numeric group ID associated with the file.

### SFtpFile.Group

`Chilkat 11.7.0 · ckperl · SFtpFile · Group · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_Group($ckStr);

$strVal = $sFtpFile->group();
```

Returns the textual group name associated with the file.

**Server requirement:** This attribute is available only when the server supports SFTP version 4 or later and provides owner/group names.

### SFtpFile.IsAppendOnly

`Chilkat 11.7.0 · ckperl · SFtpFile · IsAppendOnly · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsAppendOnly();
```

Returns `1` if the server marks the file as append-only. New data may be added only at the end of the file; existing data cannot be overwritten through normal file writes.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsArchive

`Chilkat 11.7.0 · ckperl · SFtpFile · IsArchive · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsArchive();
```

Returns `1` if the server marks the file for inclusion in backup or archive operations.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsCaseInsensitive

`Chilkat 11.7.0 · ckperl · SFtpFile · IsCaseInsensitive · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsCaseInsensitive();
```

Applies to directories. Returns `1` when names within the directory should be compared without regard to letter case.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsCompressed

`Chilkat 11.7.0 · ckperl · SFtpFile · IsCompressed · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsCompressed();
```

Returns `1` if the file is stored using transparent filesystem-level compression on the server.

This attribute describes how the server stores the file. It does not change the file bytes transferred through SFTP.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsDirectory

`Chilkat 11.7.0 · ckperl · SFtpFile · IsDirectory · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsDirectory();
```

Returns `1` if the directory entry is a directory.

### SFtpFile.IsEncrypted

`Chilkat 11.7.0 · ckperl · SFtpFile · IsEncrypted · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsEncrypted();
```

Returns `1` if the file is stored using transparent filesystem-level encryption on the server.

This attribute describes storage at rest. It does not alter the file bytes returned by read operations or accepted by write operations.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsHidden

`Chilkat 11.7.0 · ckperl · SFtpFile · IsHidden · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsHidden();
```

Returns `1` if the server marks the entry as hidden. Hidden entries are normally omitted from user-facing displays unless the user specifically requests them.

### SFtpFile.IsImmutable

`Chilkat 11.7.0 · ckperl · SFtpFile · IsImmutable · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsImmutable();
```

Returns `1` if the server marks the file as immutable. An immutable file cannot normally be deleted, renamed, modified, or used as the target of a new hard link.

Immutability is generally stronger than read-only status, the ordinary permission mask, or an access-control list. On many systems, only a privileged administrator can set or clear this attribute.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsReadOnly

`Chilkat 11.7.0 · ckperl · SFtpFile · IsReadOnly · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsReadOnly();
```

Returns `1` if the server marks the file as read-only.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsRegular

`Chilkat 11.7.0 · ckperl · SFtpFile · IsRegular · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsRegular();
```

Returns `1` if the directory entry is a regular file rather than a directory, symbolic link, device, socket, FIFO, or other special type.

### SFtpFile.IsSparse

`Chilkat 11.7.0 · ckperl · SFtpFile · IsSparse · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsSparse();
```

Returns `1` if the server identifies the file as sparse. A sparse file can contain unwritten regions, often called holes, that read as zero bytes without consuming equivalent physical disk space.

For example, writing data at an offset of 10 MB may leave the region between the previous end of file and that offset unallocated on disk.

Some servers store all files sparsely and may always set this flag. Other servers cannot reliably determine whether a file is sparse, so a file may be sparse even when this property is `0`.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsSymLink

`Chilkat 11.7.0 · ckperl · SFtpFile · IsSymLink · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsSymLink();
```

Returns `1` if the directory entry is a symbolic link.

### SFtpFile.IsSync

`Chilkat 11.7.0 · ckperl · SFtpFile · IsSync · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsSync();
```

Returns `1` if modifications to the file are committed synchronously to server storage.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.IsSystem

`Chilkat 11.7.0 · ckperl · SFtpFile · IsSystem · property · read-only`

```perl
# $boolVal is a boolean

$boolVal = $sFtpFile->get_IsSystem();
```

Returns `1` if the server marks the file as part of the operating system.

**Server requirement:** This attribute is defined for SFTP version 6 or later.

### SFtpFile.LastAccessTimeStr

`Chilkat 11.7.0 · ckperl · SFtpFile · LastAccessTimeStr · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_LastAccessTimeStr($ckStr);

$strVal = $sFtpFile->lastAccessTimeStr();
```

Returns the file's last-access date and time as an RFC 822-formatted string, such as `Fri, 21 Nov 1997 09:55:06 -0600`.

### SFtpFile.LastModifiedTimeStr

`Chilkat 11.7.0 · ckperl · SFtpFile · LastModifiedTimeStr · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_LastModifiedTimeStr($ckStr);

$strVal = $sFtpFile->lastModifiedTimeStr();
```

Returns the file's last-modified date and time as an RFC 822-formatted string, such as `Fri, 21 Nov 1997 09:55:06 -0600`.

Use `LastModifiedTime` when a native date/time value is more convenient.

### SFtpFile.Owner

`Chilkat 11.7.0 · ckperl · SFtpFile · Owner · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_Owner($ckStr);

$strVal = $sFtpFile->owner();
```

Returns the textual owner name associated with the file.

**Server requirement:** This attribute is available only when the server supports SFTP version 4 or later and provides owner/group names.

### SFtpFile.Permissions

`Chilkat 11.7.0 · ckperl · SFtpFile · Permissions · property · read-only`

```perl
# $intVal is an integer

$intVal = $sFtpFile->get_Permissions();
```

Returns the POSIX-style file-permission bit mask. The values correspond to the permission and special-mode bits in the POSIX `st_mode` field.

| Symbol | Octal value | Meaning |
| :--- | :--- | :--- |
| `S_IRUSR` | `0400` | Owner read |
| `S_IWUSR` | `0200` | Owner write |
| `S_IXUSR` | `0100` | Owner execute |
| `S_IRGRP` | `0040` | Group read |
| `S_IWGRP` | `0020` | Group write |
| `S_IXGRP` | `0010` | Group execute |
| `S_IROTH` | `0004` | Others read |
| `S_IWOTH` | `0002` | Others write |
| `S_IXOTH` | `0001` | Others execute |
| `S_ISUID` | `4000` | Set-user-ID |
| `S_ISGID` | `2000` | Set-group-ID |
| `S_ISVTX` | `1000` | Sticky bit |

Use bitwise AND operations to test individual permission bits.

### SFtpFile.Size32

`Chilkat 11.7.0 · ckperl · SFtpFile · Size32 · property · read-only`

```perl
# $intVal is an integer

$intVal = $sFtpFile->get_Size32();
```

Returns the file size in bytes as a 32-bit integer. Returns `-1` when the size cannot be represented by a 32-bit integer. Use `Size64` or `SizeStr` for larger values.

### SFtpFile.Size64

`Chilkat 11.7.0 · ckperl · SFtpFile · Size64 · property · read-only`

```perl
# $int64Val is a 64-bit integer

$int64Val = $sFtpFile->get_Size64();
```

Returns the file size in bytes as a 64-bit integer.

### SFtpFile.SizeStr

`Chilkat 11.7.0 · ckperl · SFtpFile · SizeStr · property · read-only`

```perl
# $strVal is a string

# $ckStr is a CkString

$sFtpFile->get_SizeStr($ckStr);

$strVal = $sFtpFile->sizeStr();
```

Returns the file size in bytes as a base-10 string. This is the string representation of `Size64` and is useful in environments where a 64-bit integer is inconvenient or unavailable.

### SFtpFile.Uid

`Chilkat 11.7.0 · ckperl · SFtpFile · Uid · property · read-only`

```perl
# $intVal is an integer

$intVal = $sFtpFile->get_Uid();
```

Returns the numeric user ID associated with the file.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `GetCreateDt` | method | before 11.6.1 | — |
| `GetLastAccessDt` | method | before 11.6.1 | — |
| `GetLastModifiedDt` | method | before 11.6.1 | — |

