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,
"exists": 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 $APPDATA directory:
{
"tauri": {
"allowlist": {
"fs": {
"scope": ["$APPDATA/databases/*"]
}
}
}
}
Notice the use of the $APPDATA
variable. The value is injected at runtime, resolving to the app data directory.
The available variables are:
$APPCONFIG
, $APPDATA
, $APPLOCALDATA
,
$APPCACHE
, $APPLOG
,
$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.
Referencesβ
Dir
β
Renames and re-exports BaseDirectory
writeFile
β
Renames and re-exports writeTextFile
Enumerationsβ
BaseDirectory
β
Since: 1.0.0
Enumeration Membersβ
Name | Type | Defined in |
---|---|---|
18 | fs.ts:98 | |
24 | fs.ts:104 | |
21 | fs.ts:101 | |
22 | fs.ts:102 | |
23 | fs.ts:103 | |
25 | fs.ts:105 | |
1 | fs.ts:81 | |
2 | fs.ts:82 | |
3 | fs.ts:83 | |
4 | fs.ts:84 | |
6 | fs.ts:86 | |
7 | fs.ts:87 | |
8 | fs.ts:88 | |
9 | fs.ts:89 | |
10 | fs.ts:90 | |
11 | fs.ts:91 | |
5 | fs.ts:85 | |
19 | fs.ts:99 | |
12 | fs.ts:92 | |
13 | fs.ts:93 | |
17 | fs.ts:97 | |
14 | fs.ts:94 | |
20 | fs.ts:100 | |
15 | fs.ts:95 | |
16 | fs.ts:96 |
Interfacesβ
FileEntry
β
Since: 1.0.0
Propertiesβ
children
β
Optional
children:FileEntry
[]
Children of this entry if it's a directory; null otherwise
Defined in: fs.ts:167
name
β
Optional
name:string
Name of the directory/file
can be null if the path terminates with ..
Defined in: fs.ts:165
path
β
path:
string
Defined in: fs.ts:160
FsBinaryFileOption
β
Options object used to write a binary data to a file.
Since: 1.0.0
Propertiesβ
contents
β
contents:
BinaryFileContents
The byte array contents.
Defined in: fs.ts:153
path
β
path:
string
Path to the file to write.
Defined in: fs.ts:151
FsDirOptions
β
Since: 1.0.0
Propertiesβ
dir
β
Optional
dir:BaseDirectory
Defined in: fs.ts:126
recursive
β
Optional
recursive:boolean
Defined in: fs.ts:127
FsOptions
β
Since: 1.0.0
Propertiesβ
append
β
Optional
append:boolean
Whether the content should overwrite the content of the file or append to it.
Since: 1.5.0
Defined in: fs.ts:118
dir
β
Optional
dir:BaseDirectory
Defined in: fs.ts:112
FsTextFileOption
β
Options object used to write a UTF-8 string to a file.
Since: 1.0.0
Propertiesβ
contents
β
contents:
string
The UTF-8 string to write to the file.
Defined in: fs.ts:139
path
β
path:
string
Path to the file to write.
Defined in: fs.ts:137
Type Aliasesβ
BinaryFileContents
β
BinaryFileContents:
Iterable
<number
> |ArrayLike
<number
> |ArrayBuffer
Defined in: fs.ts:142
Functionsβ
copyFile
β
copyFile(
source
:string
,destination
:string
,options?
:FsOptions
):Promise
<void
>
Copies a file to a destination.
Example
import { copyFile, BaseDirectory } from '@tauri-apps/api/fs';
// Copy the `$APPCONFIG/app.conf` file to `$APPCONFIG/app.conf.bk`
await copyFile('app.conf', 'app.conf.bk', { dir: BaseDirectory.AppConfig });
Since: 1.0.0
Parameters
Name | Type |
---|---|
source | string |
destination | string |
options | FsOptions |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.
createDir
β
createDir(
dir
:string
,options?
:FsDirOptions
):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 `$APPDATA/users` directory
await createDir('users', { dir: BaseDirectory.AppData, recursive: true });
Since: 1.0.0
Parameters
Name | Type |
---|---|
dir | string |
options | FsDirOptions |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.
exists
β
Check if a path exists.
Example
import { exists, BaseDirectory } from '@tauri-apps/api/fs';
// Check if the `$APPDATA/avatar.png` file exists
await exists('avatar.png', { dir: BaseDirectory.AppData });
Since: 1.1.0
Parameters
Name | Type |
---|---|
path | string |
options | FsOptions |
Returns: Promise
<boolean
>
readBinaryFile
β
readBinaryFile(
filePath
:string
,options?
:FsOptions
):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 });
Since: 1.0.0
Parameters
Name | Type |
---|---|
filePath | string |
options | FsOptions |
Returns: Promise
<Uint8Array
>
readDir
β
readDir(
dir
:string
,options?
:FsDirOptions
):Promise
<FileEntry
[]>
List directory files.
Example
import { readDir, BaseDirectory } from '@tauri-apps/api/fs';
// Reads the `$APPDATA/users` directory recursively
const entries = await readDir('users', { dir: BaseDirectory.AppData, recursive: true });
function processEntries(entries) {
for (const entry of entries) {
console.log(`Entry: ${entry.path}`);
if (entry.children) {
processEntries(entry.children)
}
}
}
Since: 1.0.0
Parameters
Name | Type |
---|---|
dir | string |
options | FsDirOptions |
readTextFile
β
readTextFile(
filePath
:string
,options?
:FsOptions
):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 `$APPCONFIG/app.conf` path
const contents = await readTextFile('app.conf', { dir: BaseDirectory.AppConfig });
Since: 1.0.0
Parameters
Name | Type |
---|---|
filePath | string |
options | FsOptions |
Returns: Promise
<string
>
removeDir
β
removeDir(
dir
:string
,options?
:FsDirOptions
):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 `$APPDATA/users`
await removeDir('users', { dir: BaseDirectory.AppData });
Since: 1.0.0
Parameters
Name | Type |
---|---|
dir | string |
options | FsDirOptions |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.
removeFile
β
removeFile(
file
:string
,options?
:FsOptions
):Promise
<void
>
Removes a file.
Example
import { removeFile, BaseDirectory } from '@tauri-apps/api/fs';
// Remove the `$APPConfig/app.conf` file
await removeFile('app.conf', { dir: BaseDirectory.AppConfig });
Since: 1.0.0
Parameters
Name | Type |
---|---|
file | string |
options | FsOptions |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.
renameFile
β
renameFile(
oldPath
:string
,newPath
:string
,options?
:FsOptions
):Promise
<void
>
Renames a file.
Example
import { renameFile, BaseDirectory } from '@tauri-apps/api/fs';
// Rename the `$APPDATA/avatar.png` file
await renameFile('avatar.png', 'deleted.png', { dir: BaseDirectory.AppData });
Since: 1.0.0
Parameters
Name | Type |
---|---|
oldPath | string |
newPath | string |
options | FsOptions |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.
writeBinaryFile
β
writeBinaryFile(
path
:string
,contents
:BinaryFileContents
,options?
:FsOptions
):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 `$APPDATA/avatar.png` path
await writeBinaryFile('avatar.png', new Uint8Array([]), { dir: BaseDirectory.AppData });
Since: 1.0.0
Parameters
Name | Type | Description |
---|---|---|
path | string | - |
contents | BinaryFileContents | - |
options? | FsOptions | Configuration object. |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.
writeBinaryFile(
file
:FsBinaryFileOption
,options?
:FsOptions
):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 `$APPDATA/avatar.png` path
await writeBinaryFile({ path: 'avatar.png', contents: new Uint8Array([]) }, { dir: BaseDirectory.AppData });
Since: 1.0.0
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.
writeTextFile
β
writeTextFile(
path
:string
,contents
:string
,options?
:FsOptions
):Promise
<void
>
Writes a UTF-8 text file.
Example
import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
// Write a text file to the `$APPCONFIG/app.conf` path
await writeTextFile('app.conf', 'file contents', { dir: BaseDirectory.AppConfig });
Since: 1.0.0
Parameters
Name | Type |
---|---|
path | string |
contents | string |
options? | FsOptions |
Returns: Promise
<void
>
writeTextFile(
file
:FsTextFileOption
,options?
:FsOptions
):Promise
<void
>
Writes a UTF-8 text file.
Example
import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
// Write a text file to the `$APPCONFIG/app.conf` path
await writeTextFile({ path: 'app.conf', contents: 'file contents' }, { dir: BaseDirectory.AppConfig });
Since: 1.0.0
Parameters
Name | Type |
---|---|
file | FsTextFileOption |
options? | FsOptions |
Returns: Promise
<void
>
A promise indicating the success or failure of the operation.