---
product: Chilkat
product_version: 11.7.0
language: js
language_label: JavaScript
class: DirTree
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/jsDirTreeRef.html
---
# Chilkat DirTree — JavaScript — v11.7.0

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

## Purpose

**Iterate through files and subdirectories under a base directory.**

`Chilkat.DirTree` is a lightweight directory-tree iterator for traversing files and subdirectories under a selected base directory. It supports recursive and non-recursive traversal and exposes useful information about the current item, including absolute path, UNC path, relative path, file size, and whether the current item is a directory.

**Directory traversal**

Iterate through the contents of a base directory, either recursively or one level at a time.

**Current-item details**

Get the current item's full path, relative path, UNC path, size, and directory/file status.

**Recursive scanning**

Traverse entire directory trees when an application needs to process all nested files and folders.

**Non-recursive listing**

Limit iteration to the immediate contents of the base directory when deeper traversal is not needed.

**Path-friendly output**

Use absolute or relative paths depending on whether the application needs filesystem access or archive-style relative names.

**Error-aware iteration**

Use `DoneIterating` to distinguish normal completion from an error when an iteration method returns false.

**Common pattern:** Set the base directory and recursion behavior, begin iterating, process each current item using the path and metadata properties, then check `DoneIterating` when iteration stops to determine whether traversal completed normally or ended because of an error.

For an extended overview, see [DirTree Class Overview](https://www.chilkatsoft.com/dirtree_class_overview.asp).

## Object creation, unlocking and error handling

**Object Creation**

Note: This is intended for running within a [Chilkat.Js embedded JavaScript engine](https://www.chilkatsoft.com/chilkat_javascript_engine.asp).

```
var obj = new CkDirTree();
```

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 JavaScript.

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` | `DebugLogFilePath` | 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` | `LastErrorHtml` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `LastErrorText` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `LastErrorXml` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `LastMethodSuccess` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `VerboseLogging` | `VerboseLogging` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `Version` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `BaseDir` | property, read/write | `BaseDir` |
| `DoneIterating` | property, read-only | `DoneIterating` |
| `FileSize32` | property, read-only | `FileSize32` |
| `FileSize64` | property, read-only | `FileSize64` |
| `FileSizeStr` | property, read-only | `FileSizeStr` |
| `FullPath` | property, read-only | `FullPath` |
| `FullUncPath` | property, read-only | `FullUncPath` |
| `IsDirectory` | property, read-only | `IsDirectory` |
| `Recurse` | property, read/write | `Recurse` |
| `RelativePath` | property, read-only | `RelativePath` |
| `UncommonOptions` | property, read/write | `UncommonOptions` |
| `AdvancePosition` | method | `var success = AdvancePosition();` |
| `BeginIterate` | method | `var success = BeginIterate();` |

## Properties

### DirTree.BaseDir

`Chilkat 11.7.0 · js · DirTree · BaseDir · property · read/write`

```javascript
BaseDir
```

· `string`

Specifies the root directory whose contents are traversed. Set this property before calling `BeginIterate`.

The value may be an absolute filesystem path or a relative path. A relative path is resolved from the calling process's current working directory.

**Iteration scope:** The iterator visits the files and subdirectories contained under this directory. The `Recurse` property determines whether nested levels are included.

### DirTree.DoneIterating

`Chilkat 11.7.0 · js · DirTree · DoneIterating · property · read-only`

```javascript
DoneIterating
```

· `boolean`, `read-only`

Indicates whether the traversal has reached its normal end and no current item remains.

This property is especially important because both `BeginIterate` and `AdvancePosition` can return *`false`* for either normal completion or an error:

| Method result | `DoneIterating` | Meaning |
| :--- | :--- | :--- |
| `false` | `true` | The directory was empty, or the last item has been passed. This is normal completion. |
| `false` | `false` | An error occurred. Examine `LastErrorText`. |

### DirTree.FileSize32

`Chilkat 11.7.0 · js · DirTree · FileSize32 · property · read-only`

```javascript
FileSize32
```

· `int`, `read-only`

Returns the size of the current file in bytes as a 32-bit integer. The value is `0` when the current item is a directory.

**Large files:** A 32-bit integer cannot represent all modern file sizes. Use `FileSize64` when the language binding provides it, or `FileSizeStr` when a decimal string is more portable.

### DirTree.FileSize64

`Chilkat 11.7.0 · js · DirTree · FileSize64 · property · read-only`

```javascript
FileSize64
```

· `int64`, `read-only`

Returns the size of the current file in bytes as a 64-bit integer. The value is `0` when the current item is a directory.

This is the preferred numeric size property for files that may exceed the range of `FileSize32`. In bindings that do not expose a 64-bit integer property, use `FileSizeStr`.

### DirTree.FileSizeStr

`Chilkat 11.7.0 · js · DirTree · FileSizeStr · property · read-only · since 9.5.0.88`

```javascript
FileSizeStr
```

· `string`, `read-only`

Returns the size of the current file in bytes as an unsigned decimal string. The value is `0` when the current item is a directory.

This representation is useful for very large files and for language bindings where a 64-bit integer is unavailable or inconvenient. Convert the string to an appropriate arbitrary-precision or 64-bit numeric type only when arithmetic is required.

### DirTree.FullPath

`Chilkat 11.7.0 · js · DirTree · FullPath · property · read-only`

```javascript
FullPath
```

· `string`, `read-only`

Returns the absolute filesystem path of the current file or subdirectory, including the item's name.

The path uses the native path syntax for the operating system. For a path relative to `BaseDir`, use `RelativePath`.

### DirTree.FullUncPath

`Chilkat 11.7.0 · js · DirTree · FullUncPath · property · read-only`

```javascript
FullUncPath
```

· `string`, `read-only`

Returns the current item's Windows extended-length absolute path. For example, a local path may be returned as `\\?\C:\data\reports\file.txt`; a network path may use the `\\?\UNC\server\share\...` form.

**Windows path form:** The `\\?\` prefix asks Windows to use extended-length path parsing and is useful when working with paths that may exceed legacy path-length limits. Use `FullPath` when an ordinary native absolute path is preferred.

### DirTree.IsDirectory

`Chilkat 11.7.0 · js · DirTree · IsDirectory · property · read-only`

```javascript
IsDirectory
```

· `boolean`, `read-only`

Returns *`true`* when the current item is a subdirectory and *`false`* when it is a file.

Check this property before using a file-size property. Directory items report a size of `0`.

### DirTree.Recurse

`Chilkat 11.7.0 · js · DirTree · Recurse · property · read/write`

```javascript
Recurse
```

· `boolean`

Controls whether traversal descends into nested subdirectories.

| `true` | Visit files and directories throughout the complete tree rooted at `BaseDir`. |
| :--- | --- |
| `false` | Visit only the immediate contents of `BaseDir`. |

The default value is *`true`*. Set this property before calling `BeginIterate`.

### DirTree.RelativePath

`Chilkat 11.7.0 · js · DirTree · RelativePath · property · read-only`

```javascript
RelativePath
```

· `string`, `read-only`

Returns the path of the current file or subdirectory relative to `BaseDir`, including the item's name.

For example, if `BaseDir` is `C:\data` and the current item is `C:\data\images\logo.png`, this property returns `images\logo.png` on Windows. Path separators follow the operating system's native convention.

### DirTree.UncommonOptions

`Chilkat 11.7.0 · js · DirTree · UncommonOptions · property · read/write · since 11.1.0`

```javascript
UncommonOptions
```

· `string`

Provides a comma-separated list of specialized compatibility options. The default is the empty string, and applications should normally leave it unchanged.

| Keyword | Effect |
| :--- | :--- |
| `Q_EncodePaths` | Returns path-valued output properties in Chilkat's Q-encoded representation. Introduced in Chilkat v11.1.0. This changes only the returned string representation; it does not change which filesystem items are traversed. |

## Methods

### DirTree.AdvancePosition

`Chilkat 11.7.0 · js · DirTree · AdvancePosition · method`

```javascript
var success = AdvancePosition();
```

· return: `boolean`; `true` for success, `false` for failure

Advances the traversal from the current item to the next file or subdirectory.

If the method returns *`true`*, the current-item properties—such as `FullPath`, `RelativePath`, `IsDirectory`, and the file-size properties—describe the newly selected item.

| Return value | `DoneIterating` | Meaning |
| :--- | :--- | :--- |
| `true` | `false` | The iterator advanced successfully and a current item is available. |
| `false` | `true` | The last item has been passed; traversal completed normally. |
| `false` | `false` | An error occurred. Examine `LastErrorText`. |

Returns true for success, false for failure.

### DirTree.BeginIterate

`Chilkat 11.7.0 · js · DirTree · BeginIterate · method`

```javascript
var success = BeginIterate();
```

· return: `boolean`; `true` for success, `false` for failure

Initializes a new traversal using the current `BaseDir` and `Recurse` settings.

If the method returns *`true`*, the iterator is positioned at the first file or subdirectory, and the current-item properties can be read immediately. Continue by processing that item and then calling `AdvancePosition`.

| Return value | `DoneIterating` | Meaning |
| :--- | :--- | :--- |
| `true` | `false` | The first item is available. |
| `false` | `true` | The directory contains no items in the selected traversal scope. This is not an error. |
| `false` | `false` | Initialization failed. Examine `LastErrorText`. |

**Property lifetime:** Treat the current-item properties as valid only while the iterator is positioned on an item—that is, after a successful `BeginIterate` or `AdvancePosition`.

Returns true for success, false for failure.

