@tauri-apps/plugin-fs
Access the file system.
This module prevents path traversal, not allowing parent directory accessors to be used (i.e. “/usr/path/to/../file” or ”../path/to/file” paths are not allowed). Paths accessed with this API must be either relative to one of the base directories or created with the path API.
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 file/directory paths that are allowed.
For instance, this scope configuration allows all enabled fs
APIs to (only) access files in the
databases directory of the $APPDATA
directory:
{ "permissions": [ { "identifier": "fs:scope", "allow": [{ "path": "$APPDATA/databases/*" }] } ]}
Scopes can also be applied to specific fs
APIs by using the API’s identifier instead of fs:scope
:
{ "permissions": [ { "identifier": "fs:allow-exists", "allow": [{ "path": "$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
,
$TEMP
.
Trying to execute any API with a URL not configured on the scope results in a promise rejection due to denied access.
2.0.0
AppCache: 16;
appCacheDir for more information.
Source: undefined
AppConfig: 13;
appConfigDir for more information.
Source: undefined
AppData: 14;
appDataDir for more information.
Source: undefined
AppLocalData: 15;
appLocalDataDir for more information.
Source: undefined
AppLog: 17;
appLogDir for more information.
Source: undefined
Audio: 1;
audioDir for more information.
Source: undefined
Cache: 2;
cacheDir for more information.
Source: undefined
Config: 3;
configDir for more information.
Source: undefined
Data: 4;
dataDir for more information.
Source: undefined
Desktop: 18;
desktopDir for more information.
Source: undefined
Document: 6;
documentDir for more information.
Source: undefined
Download: 7;
downloadDir for more information.
Source: undefined
Executable: 19;
executableDir for more information.
Source: undefined
Font: 20;
fontDir for more information.
Source: undefined
Home: 21;
homeDir for more information.
Source: undefined
LocalData: 5;
localDataDir for more information.
Source: undefined
Picture: 8;
pictureDir for more information.
Source: undefined
Public: 9;
publicDir for more information.
Source: undefined
Resource: 11;
resourceDir for more information.
Source: undefined
Runtime: 22;
runtimeDir for more information.
Source: undefined
Temp: 12;
tempDir for more information.
Source: undefined
Template: 23;
templateDir for more information.
Source: undefined
Video: 10;
videoDir for more information.
Source: undefined
Current: 1;
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L80
End: 2;
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L81
Start: 0;
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L79
The Tauri abstraction for reading and writing files.
2.0.0
Resource
new FileHandle(rid): FileHandle
Parameter | Type |
---|---|
rid | number |
Resource.constructor
Source: undefined
get rid(): number
number
Resource.rid
Source: undefined
close(): Promise<void>
Destroys and cleans up this resource from memory. You should not call any method on this object anymore and should drop any reference to it.
Promise
<void
>
Resource.close
Source: undefined
read(buffer): Promise<null | number>
Reads up to p.byteLength
bytes into p
. It resolves to the number of
bytes read (0
< n
<= p.byteLength
) and rejects if any error
encountered. Even if read()
resolves to n
< p.byteLength
, it may
use all of p
as scratch space during the call. If some data is
available but not p.byteLength
bytes, read()
conventionally resolves
to what is available instead of waiting for more.
When read()
encounters end-of-file condition, it resolves to EOF
(null
).
When read()
encounters an error, it rejects with an error.
Callers should always process the n
> 0
bytes returned before
considering the EOF (null
). Doing so correctly handles I/O errors that
happen after reading some bytes and also both of the allowed EOF
behaviors.
Parameter | Type |
---|---|
buffer | Uint8Array <ArrayBufferLike > |
Promise
<null
| number
>
import { open, BaseDirectory } from "@tauri-apps/plugin-fs"// if "$APPCONFIG/foo/bar.txt" contains the text "hello world":const file = await open("foo/bar.txt", { baseDir: BaseDirectory.AppConfig });const buf = new Uint8Array(100);const numberOfBytesRead = await file.read(buf); // 11 bytesconst text = new TextDecoder().decode(buf); // "hello world"await file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L314
seek(offset, whence): Promise<number>
Seek sets the offset for the next read()
or write()
to offset,
interpreted according to whence
: Start
means relative to the
start of the file, Current
means relative to the current offset,
and End
means relative to the end. Seek resolves to the new offset
relative to the start of the file.
Seeking to an offset before the start of the file is an error. Seeking to any positive offset is legal, but the behavior of subsequent I/O operations on the underlying object is implementation-dependent. It returns the number of cursor position.
Parameter | Type |
---|---|
offset | number |
whence | SeekMode |
Promise
<number
>
import { open, SeekMode, BaseDirectory } from '@tauri-apps/plugin-fs';
// Given hello.txt pointing to file with "Hello world", which is 11 bytes long:const file = await open('hello.txt', { read: true, write: true, truncate: true, create: true, baseDir: BaseDirectory.AppLocalData });await file.write(new TextEncoder().encode("Hello world"));
// Seek 6 bytes from the start of the fileconsole.log(await file.seek(6, SeekMode.Start)); // "6"// Seek 2 more bytes from the current positionconsole.log(await file.seek(2, SeekMode.Current)); // "8"// Seek backwards 2 bytes from the end of the fileconsole.log(await file.seek(-2, SeekMode.End)); // "9" (e.g. 11-2)
await file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L369
stat(): Promise<FileInfo>
Returns a FileInfo
for this file.
import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open("file.txt", { read: true, baseDir: BaseDirectory.AppLocalData });const fileInfo = await file.stat();console.log(fileInfo.isFile); // trueawait file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L391
truncate(len?): Promise<void>
Truncates or extends this file, to reach the specified len
.
If len
is not specified then the entire file contents are truncated.
Parameter | Type |
---|---|
len ? | number |
Promise
<void
>
import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
// truncate the entire fileconst file = await open("my_file.txt", { read: true, write: true, create: true, baseDir: BaseDirectory.AppLocalData });await file.truncate();
// truncate part of the fileconst file = await open("my_file.txt", { read: true, write: true, create: true, baseDir: BaseDirectory.AppLocalData });await file.write(new TextEncoder().encode("Hello World"));await file.truncate(7);const data = new Uint8Array(32);await file.read(data);console.log(new TextDecoder().decode(data)); // Hello Wawait file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L423
write(data): Promise<number>
Writes data.byteLength
bytes from data
to the underlying data stream. It
resolves to the number of bytes written from data
(0
<= n
<=
data.byteLength
) or reject with the error encountered that caused the
write to stop early. write()
must reject with a non-null error if
would resolve to n
< data.byteLength
. write()
must not modify the
slice data, even temporarily.
Parameter | Type |
---|---|
data | Uint8Array <ArrayBufferLike > |
Promise
<number
>
import { open, write, BaseDirectory } from '@tauri-apps/plugin-fs';const encoder = new TextEncoder();const data = encoder.encode("Hello world");const file = await open("bar.txt", { write: true, baseDir: BaseDirectory.AppLocalData });const bytesWritten = await file.write(data); // 11await file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L450
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
fromPathBaseDir? | BaseDirectory | Base directory for fromPath . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L586 |
toPathBaseDir? | BaseDirectory | Base directory for toPath . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L588 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L463 |
2.0.0
Property | Type | Description | Inherited from | Defined in |
---|---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | WatchOptions .baseDir | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1170 |
delayMs? | number | Debounce delay | - | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1178 |
recursive? | boolean | Watch a directory recursively | WatchOptions .recursive | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1168 |
A disk entry which is either a file, a directory or a symlink.
This is the result of the readDir
.
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
isDirectory | boolean | Specifies whether this entry is a directory or not. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L677 |
isFile | boolean | Specifies whether this entry is a file or not. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L679 |
isSymlink | boolean | Specifies whether this entry is a symlink or not. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L681 |
name | string | The name of the entry (file name with extension or directory name). | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L675 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1135 |
A FileInfo describes a file and is returned by stat
, lstat
or fstat
.
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
atime | null | Date | The last access time of the file. This corresponds to the atime field from stat on Unix and ftLastAccessTime on Windows. This may not be available on all platforms. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L120 |
birthtime | null | Date | The creation time of the file. This corresponds to the birthtime field from stat on Mac/BSD and ftCreationTime on Windows. This may not be available on all platforms. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L126 |
blksize | null | number | Blocksize for filesystem I/O. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L203 |
blocks | null | number | Number of blocks allocated to the file, in 512-byte units. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L211 |
dev | null | number | ID of the device containing the file. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L146 |
fileAttributes | null | number | This field contains the file system attribute information for a file or directory. For possible values and their descriptions, see File Attribute Constants in the Windows Dev Center #### Platform-specific - macOS / Linux / Android / iOS: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L138 |
gid | null | number | Group ID of the owner of this file. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L187 |
ino | null | number | Inode number. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L154 |
isDirectory | boolean | True if this is info for a regular directory. Mutually exclusive to FileInfo.isFile and FileInfo.isSymlink . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L99 |
isFile | boolean | True if this is info for a regular file. Mutually exclusive to FileInfo.isDirectory and FileInfo.isSymlink . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L94 |
isSymlink | boolean | True if this is info for a symlink. Mutually exclusive to FileInfo.isFile and FileInfo.isDirectory . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L104 |
mode | null | number | The underlying raw st_mode bits that contain the standard Unix permissions for this file/directory. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L163 |
mtime | null | Date | The last modification time of the file. This corresponds to the mtime field from stat on Linux/Mac OS and ftLastWriteTime on Windows. This may not be available on all platforms. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L114 |
nlink | null | number | Number of hard links pointing to this file. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L171 |
rdev | null | number | Device ID of this file. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L195 |
readonly | boolean | Whether this is a readonly (unwritable) file. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L128 |
size | number | The size of the file, in bytes. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L108 |
uid | null | number | User ID of the owner of this file. #### Platform-specific - Windows: Unsupported. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L179 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L631 |
mode? | number | Permissions to use when creating the directory (defaults to 0o777 , before the process’s umask). Ignored on Windows. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L625 |
recursive? | boolean | Defaults to false . If set to true , means that any intermediate directories will also be created (as with the shell command mkdir -p ). | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L629 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
append? | boolean | Sets the option for the append mode. This option, when true , means that writes will append to a file instead of overwriting previous contents. Note that setting { write: true, append: true } has the same effect as setting only { append: true } . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L518 |
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L546 |
create? | boolean | Sets the option to allow creating a new file, if one doesn’t already exist at the specified path. Requires write or append access to be used. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L531 |
createNew? | boolean | Defaults to false . If set to true , no file, directory, or symlink is allowed to exist at the target location. Requires write or append access to be used. When createNew is set to true , create and truncate are ignored. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L538 |
mode? | number | Permissions to use if creating the file (defaults to 0o666 , before the process’s umask). Ignored on Windows. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L544 |
read? | boolean | Sets the option for read access. This option, when true , means that the file should be read-able if opened. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L504 |
truncate? | boolean | Sets the option for truncating a previous file. If a file is successfully opened with this option set it will truncate the file to 0 size if it already exists. The file must be opened with write access for truncate to work. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L525 |
write? | boolean | Sets the option for write access. This option, when true , means that the file should be write-able if opened. If the file already exists, any write calls on it will overwrite its contents, by default without truncating it. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L511 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L663 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L725 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L862 |
recursive? | boolean | Defaults to false . If set to true , path will be removed even if it’s a non-empty directory. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L860 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
newPathBaseDir? | BaseDirectory | Base directory for newPath . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L898 |
oldPathBaseDir? | BaseDirectory | Base directory for oldPath . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L896 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L940 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path . | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L999 |
2.0.0
Property | Type | Defined in |
---|---|---|
attrs | unknown | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1187 |
paths | string [] | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1186 |
type | WatchEventKind | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1185 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1170 |
recursive? | boolean | Watch a directory recursively | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1168 |
2.0.0
Property | Type | Description | Defined in |
---|---|---|---|
append? | boolean | Defaults to false . If set to true , will append to a file instead of overwriting previous contents. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1043 |
baseDir? | BaseDirectory | Base directory for path | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1051 |
create? | boolean | Sets the option to allow creating a new file, if one doesn’t already exist at the specified path (defaults to true ). | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1045 |
createNew? | boolean | Sets the option to create a new file, failing if it already exists. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1047 |
mode? | number | File permissions. Ignored on Windows. | Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1049 |
type UnwatchFn: () => void;
void
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1252
type WatchEventKind: | "any" | object | object | object | object | "other";
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1193
type WatchEventKindAccess: object | object | object | object;
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1204
type WatchEventKindCreate: object | object | object | object;
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1213
type WatchEventKindModify: | object | object | object | object | object;
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1222
type WatchEventKindRemove: object | object | object | object;
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1242
function copyFile( fromPath, toPath,options?): Promise<void>
Copies the contents and permissions of one file to another specified path, by default creating a new file if needed, else overwriting.
Parameter | Type |
---|---|
fromPath | string | URL |
toPath | string | URL |
options ? | CopyFileOptions |
Promise
<void
>
import { copyFile, BaseDirectory } from '@tauri-apps/plugin-fs';await copyFile('app.conf', 'app.conf.bk', { fromPathBaseDir: BaseDirectory.AppConfig, toPathBaseDir: BaseDirectory.AppConfig });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L601
function create(path, options?): Promise<FileHandle>
Creates a file if none exists or truncates an existing file and resolves to
an instance of FileHandle
.
Parameter | Type |
---|---|
path | string | URL |
options ? | CreateOptions |
import { create, BaseDirectory } from "@tauri-apps/plugin-fs"const file = await create("foo/bar.txt", { baseDir: BaseDirectory.AppConfig });await file.write(new TextEncoder().encode("Hello world"));await file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L480
function exists(path, options?): Promise<boolean>
Check if a path exists.
Parameter | Type |
---|---|
path | string | URL |
options ? | ExistsOptions |
Promise
<boolean
>
import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';// Check if the `$APPDATA/avatar.png` file existsawait exists('avatar.png', { baseDir: BaseDirectory.AppData });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1149
function lstat(path, options?): Promise<FileInfo>
Resolves to a FileInfo
for the specified path
. If path
is a
symlink, information for the symlink will be returned instead of what it
points to.
Parameter | Type |
---|---|
path | string | URL |
options ? | StatOptions |
import { lstat, BaseDirectory } from '@tauri-apps/plugin-fs';const fileInfo = await lstat("hello.txt", { baseDir: BaseDirectory.AppLocalData });console.log(fileInfo.isFile); // true
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L982
function mkdir(path, options?): Promise<void>
Creates a new directory with the specified path.
Parameter | Type |
---|---|
path | string | URL |
options ? | MkdirOptions |
Promise
<void
>
import { mkdir, BaseDirectory } from '@tauri-apps/plugin-fs';await mkdir('users', { baseDir: BaseDirectory.AppLocalData });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L644
function open(path, options?): Promise<FileHandle>
Open a file and resolve to an instance of FileHandle
. The
file does not need to previously exist if using the create
or createNew
open options. It is the callers responsibility to close the file when finished
with it.
Parameter | Type |
---|---|
path | string | URL |
options ? | OpenOptions |
import { open, BaseDirectory } from "@tauri-apps/plugin-fs"const file = await open("foo/bar.txt", { read: true, write: true, baseDir: BaseDirectory.AppLocalData });// Do work with fileawait file.close();
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L565
function readDir(path, options?): Promise<DirEntry[]>
Reads the directory given by path and returns an array of DirEntry
.
Parameter | Type |
---|---|
path | string | URL |
options ? | ReadDirOptions |
import { readDir, BaseDirectory } from '@tauri-apps/plugin-fs';import { join } from '@tauri-apps/api/path';const dir = "users"const entries = await readDir('users', { baseDir: BaseDirectory.AppLocalData });processEntriesRecursively(dir, entries);async function processEntriesRecursively(parent, entries) { for (const entry of entries) { console.log(`Entry: ${entry.name}`); if (entry.isDirectory) { const dir = await join(parent, entry.name); processEntriesRecursively(dir, await readDir(dir, { baseDir: BaseDirectory.AppLocalData })) } }}
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L706
function readFile(path, options?): Promise<Uint8Array>
Reads and resolves to the entire contents of a file as an array of bytes. TextDecoder can be used to transform the bytes to string if required.
Parameter | Type |
---|---|
path | string | URL |
options ? | ReadFileOptions |
import { readFile, BaseDirectory } from '@tauri-apps/plugin-fs';const contents = await readFile('avatar.png', { baseDir: BaseDirectory.Resource });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L739
function readTextFile(path, options?): Promise<string>
Reads and returns the entire contents of a file as UTF-8 string.
Parameter | Type |
---|---|
path | string | URL |
options ? | ReadFileOptions |
Promise
<string
>
import { readTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';const contents = await readTextFile('app.conf', { baseDir: BaseDirectory.AppConfig });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L765
function readTextFileLines(path, options?): Promise<AsyncIterableIterator<string>>
Returns an async AsyncIterableIterator over the lines of a file as UTF-8 string.
Parameter | Type |
---|---|
path | string | URL |
options ? | ReadFileOptions |
Promise
<AsyncIterableIterator
<string
>>
import { readTextFileLines, BaseDirectory } from '@tauri-apps/plugin-fs';const lines = await readTextFileLines('app.conf', { baseDir: BaseDirectory.AppConfig });for await (const line of lines) { console.log(line);}
You could also call AsyncIterableIterator.next to advance the iterator so you can lazily read the next line whenever you want.
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L798
function remove(path, options?): Promise<void>
Removes the named file or directory.
If the directory is not empty and the recursive
option isn’t set to true, the promise will be rejected.
Parameter | Type |
---|---|
path | string | URL |
options ? | RemoveOptions |
Promise
<void
>
import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';await remove('users/file.txt', { baseDir: BaseDirectory.AppLocalData });await remove('users', { baseDir: BaseDirectory.AppLocalData });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L877
function rename( oldPath, newPath,options?): Promise<void>
Renames (moves) oldpath to newpath. Paths may be files or directories. If newpath already exists and is not a directory, rename() replaces it. OS-specific restrictions may apply when oldpath and newpath are in different directories.
On Unix, this operation does not follow symlinks at either path.
Parameter | Type |
---|---|
oldPath | string | URL |
newPath | string | URL |
options ? | RenameOptions |
Promise
<void
>
import { rename, BaseDirectory } from '@tauri-apps/plugin-fs';await rename('avatar.png', 'deleted.png', { oldPathBaseDir: BaseDirectory.App, newPathBaseDir: BaseDirectory.AppLocalData });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L916
function size(path): Promise<number>
Get the size of a file or directory. For files, the stat
functions can be used as well.
If path
is a directory, this function will recursively iterate over every file and every directory inside of path
and therefore will be very time consuming if used on larger directories.
Parameter | Type |
---|---|
path | string | URL |
Promise
<number
>
import { size, BaseDirectory } from '@tauri-apps/plugin-fs';// Get the size of the `$APPDATA/tauri` directory.const dirSize = await size('tauri', { baseDir: BaseDirectory.AppData });console.log(dirSize); // 1024
2.1.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1334
function stat(path, options?): Promise<FileInfo>
Resolves to a FileInfo
for the specified path
. Will always
follow symlinks but will reject if the symlink points to a path outside of the scope.
Parameter | Type |
---|---|
path | string | URL |
options ? | StatOptions |
import { stat, BaseDirectory } from '@tauri-apps/plugin-fs';const fileInfo = await stat("hello.txt", { baseDir: BaseDirectory.AppLocalData });console.log(fileInfo.isFile); // true
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L956
function truncate( path, len?,options?): Promise<void>
Truncates or extends the specified file, to reach the specified len
.
If len
is 0
or not specified, then the entire file contents are truncated.
Parameter | Type |
---|---|
path | string | URL |
len ? | number |
options ? | TruncateOptions |
Promise
<void
>
import { truncate, readTextFile, writeTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';// truncate the entire fileawait truncate("my_file.txt", 0, { baseDir: BaseDirectory.AppLocalData });
// truncate part of the fileconst filePath = "file.txt";await writeTextFile(filePath, "Hello World", { baseDir: BaseDirectory.AppLocalData });await truncate(filePath, 7, { baseDir: BaseDirectory.AppLocalData });const data = await readTextFile(filePath, { baseDir: BaseDirectory.AppLocalData });console.log(data); // "Hello W"
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1022
function watch( paths, cb,options?): Promise<UnwatchFn>
Watch changes (after a delay) on files or directories.
Parameter | Type |
---|---|
paths | string | URL | string [] | URL [] |
cb | (event ) => void |
options ? | DebouncedWatchOptions |
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1291
function watchImmediate( paths, cb,options?): Promise<UnwatchFn>
Watch changes on files or directories.
Parameter | Type |
---|---|
paths | string | URL | string [] | URL [] |
cb | (event ) => void |
options ? | WatchOptions |
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1308
function writeFile( path, data,options?): Promise<void>
Write data
to the given path
, by default creating a new file if needed, else overwriting.
Parameter | Type |
---|---|
path | string | URL |
data | Uint8Array <ArrayBufferLike > | ReadableStream <Uint8Array <ArrayBufferLike >> |
options ? | WriteFileOptions |
Promise
<void
>
import { writeFile, BaseDirectory } from '@tauri-apps/plugin-fs';
let encoder = new TextEncoder();let data = encoder.encode("Hello World");await writeFile('file.txt', data, { baseDir: BaseDirectory.AppLocalData });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1067
function writeTextFile( path, data,options?): Promise<void>
Writes UTF-8 string data
to the given path
, by default creating a new file if needed, else overwriting.
Parameter | Type |
---|---|
path | string | URL |
data | string |
options ? | WriteFileOptions |
Promise
<void
>
import { writeTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';
await writeTextFile('file.txt', "Hello world", { baseDir: BaseDirectory.AppLocalData });
2.0.0
Source: https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/fs/guest-js/index.ts#L1111
© 2025 Tauri Contributors. CC-BY / MIT