Skip to main content

fs

@tauri-apps/api / fs

Module: fs

Access the file system.

This package is also accessible with window.__TAURI__.fs when build.withGlobalTauri in tauri.conf.json is set to true.

The APIs must be added to tauri.allowlist.fs in tauri.conf.json:

{
"tauri": {
"allowlist": {
"fs": {
"all": true, // enable all FS APIs
"readFile": true,
"writeFile": true,
"readDir": true,
"copyFile": true,
"createDir": true,
"removeDir": true,
"removeFile": true,
"renameFile": true
}
}
}
}

It is recommended to allowlist only the APIs you use for optimal bundle size and security.

Security​

This module prevents path traversal, not allowing absolute paths or parent dir components (i.e. "/usr/path/to/file" or "../path/to/file" paths are not allowed). Paths accessed with this API must be relative to one of the base directories so if you need access to arbitrary filesystem paths, you must write such logic on the core layer instead.

The API has a scope configuration that forces you to restrict the paths that can be accessed using glob patterns.

The scope configuration is an array of glob patterns describing folder paths that are allowed. For instance, this scope configuration only allows accessing files on the databases folder of the $APP directory:

{
"tauri": {
"allowlist": {
"fs": {
"scope": ["$APP/databases/*"]
}
}
}
}

Notice the use of the $APP variable. The value is injected at runtime, resolving to the app directory. The available variables are: $AUDIO, $CACHE, $CONFIG, $DATA, $LOCALDATA, $DESKTOP, $DOCUMENT, $DOWNLOAD, $EXE, $FONT, $HOME, $PICTURE, $PUBLIC, $RUNTIME, $TEMPLATE, $VIDEO, $RESOURCE, $APP, $LOG, $TEMP.

Trying to execute any API with a URL not configured on the scope results in a promise rejection due to denied access.

Note that this scope applies to all APIs on this module.

Enumerations​

Interfaces​

References​

Dir​

Renames and re-exports BaseDirectory


writeFile​

Renames and re-exports writeTextFile

Type Aliases​

BinaryFileContents​

BinaryFileContents: Iterable<number> | ArrayLike<number> | ArrayBuffer

Defined in​

fs.ts:115

Functions​

copyFile​

copyFile(source, destination, options?): Promise<void>

Copys a file to a destination.

Example

import { copyFile, BaseDirectory } from '@tauri-apps/api/fs';
// Copy the `$APPDIR/app.conf` file to `$APPDIR/app.conf.bk`
await copyFile('app.conf', 'app.conf.bk', { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
sourcestringA path of the file to copy.
destinationstringA path for the destination file.
optionsFsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.


createDir​

createDir(dir, options?): Promise<void>

Creates a directory. If one of the path's parent components doesn't exist and the recursive option isn't set to true, the promise will be rejected.

Example

import { createDir, BaseDirectory } from '@tauri-apps/api/fs';
// Create the `$APPDIR/users` directory
await createDir('users', { dir: BaseDirectory.App, recursive: true });

Parameters​

NameTypeDescription
dirstringPath to the directory to create.
optionsFsDirOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.


readBinaryFile​

readBinaryFile(filePath, options?): Promise<Uint8Array>

Reads a file as byte array.

Example

import { readBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
// Read the image file in the `$RESOURCEDIR/avatar.png` path
const contents = await readBinaryFile('avatar.png', { dir: BaseDirectory.Resource });

Parameters​

NameTypeDescription
filePathstringPath to the file.
optionsFsOptionsConfiguration object.

Returns​

Promise<Uint8Array>

A promise resolving to the file bytes array.


readDir​

readDir(dir, options?): Promise<FileEntry[]>

List directory files.

Example

import { readDir, BaseDirectory } from '@tauri-apps/api/fs';
// Reads the `$APPDIR/users` directory recursively
const entries = await readDir('users', { dir: BaseDirectory.App, recursive: true });

function processEntries(entries) {
for (const entry of entries) {
console.log(`Entry: ${entry.path}`);
if (entry.children) {
processEntries(entry.children)
}
}
}

Parameters​

NameTypeDescription
dirstringPath to the directory to read.
optionsFsDirOptionsConfiguration object.

Returns​

Promise<FileEntry[]>

A promise resolving to the directory entries.


readTextFile​

readTextFile(filePath, options?): Promise<string>

Reads a file as an UTF-8 encoded string.

Example

import { readTextFile, BaseDirectory } from '@tauri-apps/api/fs';
// Read the text file in the `$APPDIR/app.conf` path
const contents = await readTextFile('app.conf', { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
filePathstringPath to the file.
optionsFsOptionsConfiguration object.

Returns​

Promise<string>

A promise resolving to the file content as a UTF-8 encoded string.


removeDir​

removeDir(dir, options?): Promise<void>

Removes a directory. If the directory is not empty and the recursive option isn't set to true, the promise will be rejected.

Example

import { removeDir, BaseDirectory } from '@tauri-apps/api/fs';
// Remove the directory `$APPDIR/users`
await removeDir('users', { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
dirstringPath to the directory to remove.
optionsFsDirOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.


removeFile​

removeFile(file, options?): Promise<void>

Removes a file.

Example

import { removeFile, BaseDirectory } from '@tauri-apps/api/fs';
// Remove the `$APPDIR/app.conf` file
await removeFile('app.conf', { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
filestringPath to the file to remove.
optionsFsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.


renameFile​

renameFile(oldPath, newPath, options?): Promise<void>

Renames a file.

Example

import { renameFile, BaseDirectory } from '@tauri-apps/api/fs';
// Rename the `$APPDIR/avatar.png` file
await renameFile('avatar.png', 'deleted.png', { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
oldPathstringA path of the file to rename.
newPathstringA path of the new file name.
optionsFsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.


writeBinaryFile​

writeBinaryFile(path, contents, options?): Promise<void>

Writes a byte array content to a file.

Example

import { writeBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
// Write a binary file to the `$APPDIR/avatar.png` path
await writeBinaryFile('avatar.png', new Uint8Array([]), { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
pathstringThe file path.
contentsBinaryFileContentsThe file contents.
options?FsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.

writeBinaryFile(file, options?): Promise<void>

Writes a byte array content to a file.

Example

import { writeBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
// Write a binary file to the `$APPDIR/avatar.png` path
await writeBinaryFile({ path: 'avatar.png', contents: new Uint8Array([]) }, { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
fileFsBinaryFileOptionThe object containing the file path and contents.
options?FsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.


writeTextFile​

writeTextFile(path, contents, options?): Promise<void>

Writes a UTF-8 text file.

Example

import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
// Write a text file to the `$APPDIR/app.conf` path
await writeTextFile('app.conf', 'file contents', { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
pathstringThe file path.
contentsstringThe file contents.
options?FsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.

writeTextFile(file, options?): Promise<void>

Writes a UTF-8 text file.

Example

import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
// Write a text file to the `$APPDIR/app.conf` path
await writeTextFile({ path: 'app.conf', contents: 'file contents' }, { dir: BaseDirectory.App });

Parameters​

NameTypeDescription
fileFsTextFileOptionThe object containing the file path and contents.
options?FsOptionsConfiguration object.

Returns​

Promise<void>

A promise indicating the success or failure of the operation.