fs
@tauri-apps/api / fs
Module: fs
Access the file system.
This package is also accessible with window.__TAURI__.fs
when tauri.conf.json > build > withGlobalTauri
is set to true.
The APIs must be allowlisted on 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
>
Defined in​
Functions​
copyFile​
â–¸ copyFile(source
, destination
, options?
): Promise
<void
>
Copys a file to a destination.
example
Copy the $APPDIR/app.conf
file to $APPDIR/app.conf.bk
import { copyFile, BaseDirectory } from '@tauri-apps/api/fs';
await copyFile('app.conf', 'app.conf.bk', { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
source | string | A path of the file to copy. |
destination | string | A path for the destination file. |
options | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
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
Create the $APPDIR/users
directory
import { createDir, BaseDirectory } from '@tauri-apps/api/fs';
await createDir('users', { dir: BaseDirectory.App, recursive: true });
Parameters​
Name | Type | Description |
---|---|---|
dir | string | Path to the directory to create. |
options | FsDirOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
readBinaryFile​
â–¸ readBinaryFile(filePath
, options?
): Promise
<Uint8Array
>
Reads a file as byte array.
example
Read the image file in the $RESOURCEDIR/avatar.png
path
import { readBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
const contents = await readBinaryFile('avatar.png', { dir: BaseDirectory.Resource });
Parameters​
Name | Type | Description |
---|---|---|
filePath | string | Path to the file. |
options | FsOptions | Configuration object. |
Returns​
Promise
<Uint8Array
>
A promise resolving to the file bytes array.
Defined in​
readDir​
â–¸ readDir(dir
, options?
): Promise
<FileEntry
[]>
List directory files.
example
Reads the $APPDIR/users
directory recursively
import { readDir, BaseDirectory } from '@tauri-apps/api/fs';
const entries = await readDir('users', new Uint8Array([]), { dir: BaseDirectory.App, recursive: true });
function processEntries(entries) {
for (const entry of entries) {
console.log(`Entry: ${entry.path}`);
if (entry.children !== null) {
processEntries(entry.children)
}
}
}
Parameters​
Name | Type | Description |
---|---|---|
dir | string | Path to the directory to read. |
options | FsDirOptions | Configuration object. |
Returns​
Promise
<FileEntry
[]>
A promise resolving to the directory entries.
Defined in​
readTextFile​
â–¸ readTextFile(filePath
, options?
): Promise
<string
>
Reads a file as an UTF-8 encoded string.
example
Read the text file in the $APPDIR/app.conf
path
import { readTextFile, BaseDirectory } from '@tauri-apps/api/fs';
const contents = await readTextFile('app.conf', { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
filePath | string | Path to the file. |
options | FsOptions | Configuration object. |
Returns​
Promise
<string
>
A promise resolving to the file content as a UTF-8 encoded string.
Defined in​
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
Remove the directory $APPDIR/users
import { removeDir, BaseDirectory } from '@tauri-apps/api/fs';
await removeDir('users', { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
dir | string | Path to the directory to remove. |
options | FsDirOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
removeFile​
â–¸ removeFile(file
, options?
): Promise
<void
>
Removes a file.
example
Remove the $APPDIR/app.conf
file
import { removeFile, BaseDirectory } from '@tauri-apps/api/fs';
await removeFile('app.conf', { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
file | string | Path to the file to remove. |
options | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
renameFile​
â–¸ renameFile(oldPath
, newPath
, options?
): Promise
<void
>
Renames a file.
example
Rename the $APPDIR/avatar.png
file
import { renameFile, BaseDirectory } from '@tauri-apps/api/fs';
await renameFile('avatar.png', 'deleted.png', { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
oldPath | string | A path of the file to rename. |
newPath | string | A path of the new file name. |
options | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
writeBinaryFile​
â–¸ writeBinaryFile(path
, contents
, options?
): Promise
<void
>
Writes a byte array content to a file.
example
Write a binary file to the $APPDIR/avatar.png
path
import { writeBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
await writeBinaryFile('avatar.png', new Uint8Array([]), { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
path | string | The file path. |
contents | BinaryFileContents | The file contents. |
options? | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
â–¸ writeBinaryFile(file
, options?
): Promise
<void
>
Writes a byte array content to a file.
example
Write a binary file to the $APPEDIR/avatar.png
path
import { writeBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
await writeBinaryFile({ path: 'avatar.png', contents: new Uint8Array([]) }, { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
file | FsBinaryFileOption | The object containing the file path and contents. |
options? | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
writeTextFile​
â–¸ writeTextFile(path
, contents
, options?
): Promise
<void
>
Writes a UTF-8 text file.
example
Write a text file to the $APPDIR/app.conf
path
import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
await writeTextFile('app.conf', 'file contents', { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
path | string | The file path. |
contents | string | The file contents. |
options? | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.
Defined in​
â–¸ writeTextFile(file
, options?
): Promise
<void
>
Writes a UTF-8 text file.
example
Write a text file to the $APPDIR/app.conf
path
import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
await writeTextFile({ path: 'app.conf', contents: 'file contents' }, { dir: BaseDirectory.App });
Parameters​
Name | Type | Description |
---|---|---|
file | FsTextFileOption | The object containing the file path and contents. |
options? | FsOptions | Configuration object. |
Returns​
Promise
<void
>
A promise indicating the success or failure of the operation.