跳到主要内容

文件系统

访问文件系统。

tauri.conf.json中的build.withGlobalTauri设置为true时,此包也可以通过window.__TAURI__.fs访问。

必须将API添加到tauri.conf.json中的tauri.allowlist.fs

{
"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
}
}
}
}

建议只允许列出您使用的API,以优化包大小和安全性。

安全

此模块可防止路径遍历,不允许使用绝对路径或父目录组件(即不允许使用“/usr/path/to/file”或“../path/to/file”路径)。使用此API访问的路径必须相对于基目录之一,因此如果您需要访问任意文件系统路径,则必须在核心层编写此类逻辑。

该API具有作用域配置,强制您使用glob模式限制可访问的路径。

作用域配置是描述允许的文件夹路径的glob模式数组。例如,此作用域配置仅允许访问$APPDATA目录databases文件夹中的文件。

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

请注意使用了$APPDATA变量。该值在运行时注入,解析为应用程序数据目录。可用的变量有:$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

尝试使用作用域中未配置的URL执行任何API将导致由于拒绝访问而导致promise拒绝。

请注意,此作用域适用于此模块中的所有API。

参考

Dir

重命名并重新导出BaseDirectory

writeFile

重命名并重新导出writeTextFile

枚举

BaseDirectory

: 1.0.0

枚举成员

名称类型定义于
18fs.ts:98
24fs.ts:104
21fs.ts:101
22fs.ts:102
23fs.ts:103
25fs.ts:105
1fs.ts:81
2fs.ts:82
3fs.ts:83
4fs.ts:84
6fs.ts:86
7fs.ts:87
8fs.ts:88
9fs.ts:89
10fs.ts:90
11fs.ts:91
5fs.ts:85
19fs.ts:99
12fs.ts:92
13fs.ts:93
17fs.ts:97
14fs.ts:94
20fs.ts:100
15fs.ts:95
16fs.ts:96

接口

FileEntry

: 1.0.0

属性

children

可选 children: FileEntry[]

如果它是目录,则为该条目的子项;否则为null

定义于: fs.ts:167

name

可选 name: string

目录/文件的名称,如果路径以..结尾,则可以为null

定义于: fs.ts:165

path

path: string

定义于: fs.ts:160

FsBinaryFileOption

用于将二进制数据写入文件的选项对象。

: 1.0.0

属性

contents

contents: BinaryFileContents

字节数组内容。

定义于: fs.ts:153

path

path: string

要写入文件的路径。

定义于: fs.ts:151

FsDirOptions

: 1.0.0

属性

dir

可选 dir: BaseDirectory

定义于: fs.ts:126

recursive

可选 recursive: boolean

定义于: fs.ts:127

FsOptions

: 1.0.0

属性

append

可选 append: boolean

内容是否应覆盖文件内容或追加到文件内容。

: 1.5.0

定义于: fs.ts:118

dir

可选 dir: BaseDirectory

定义于: fs.ts:112

FsTextFileOption

用于将 UTF-8 字符串写入文件的选项对象。

: 1.0.0

属性

contents

contents: string

要写入文件的 UTF-8 字符串。

定义于: fs.ts:139

path

path: string

要写入文件的路径。

定义于: fs.ts:137

类型别名

BinaryFileContents

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

定义于: fs.ts:142

函数

copyFile

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

将文件复制到目标位置。

示例

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 });

: 1.0.0

参数

名称类型
源文件字符串
目标文件字符串
选项FsOptions

返回值:Promise<void>

指示操作成功或失败的 Promise。

createDir

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

创建目录。如果路径的父组件之一不存在且recursive选项未设置为true,则 Promise 将被拒绝。

示例

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

: 1.0.0

参数

名称类型
目录路径字符串
选项目录选项

返回值:Promise<void>

指示操作成功或失败的 Promise。

exists

exists(path: string, options?: FsOptions): Promise<boolean>

检查路径是否存在。

示例

import { exists, BaseDirectory } from '@tauri-apps/api/fs';
// Check if the `$APPDATA/avatar.png` file exists
await exists('avatar.png', { dir: BaseDirectory.AppData });

: 1.1.0

参数

名称类型
路径字符串
选项FsOptions

返回值:Promise<boolean>

readBinaryFile

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

将文件读取为字节数组。

示例

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 });

: 1.0.0

参数

名称类型
文件路径字符串
选项FsOptions

返回值:Promise<Uint8Array>

readDir

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

列出目录文件。

示例

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)
}
}
}

: 1.0.0

参数

名称类型
目录路径字符串
选项目录选项

返回值:Promise<FileEntry[]>>

readTextFile

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

将文件读取为 UTF-8 编码的字符串。

示例

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 });

: 1.0.0

参数

名称类型
文件路径字符串
选项FsOptions

返回值:Promise<string>

removeDir

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

删除目录。如果目录不为空且recursive选项未设置为true,则 Promise 将被拒绝。

示例

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

: 1.0.0

参数

名称类型
目录路径字符串
选项目录选项

返回值:Promise<void>

指示操作成功或失败的 Promise。

removeFile

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

删除文件。

示例

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

: 1.0.0

参数

名称类型
文件路径字符串
选项FsOptions

返回值:Promise<void>

指示操作成功或失败的 Promise。

renameFile

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

重命名文件。

示例

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

: 1.0.0

参数

名称类型
旧文件路径字符串
新文件路径字符串
选项FsOptions

返回值:Promise<void>

指示操作成功或失败的 Promise。

writeBinaryFile

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

将字节数组内容写入文件。

示例

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 });

: 1.0.0

参数

名称类型描述
路径字符串-
内容二进制文件内容-
可选配置对象FsOptions配置对象。

返回值:Promise<void>

指示操作成功或失败的 Promise。

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

将字节数组内容写入文件。

示例

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 });

: 1.0.0

参数

名称类型描述
文件路径包含文件路径和内容的对象。包含文件路径和内容的对象。
可选配置对象FsOptions配置对象。

返回值:Promise<void>

指示操作成功或失败的 Promise。

writeTextFile

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

写入 UTF-8 文本文件。

示例

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 });

: 1.0.0

参数

名称类型
路径字符串
内容字符串
可选配置对象FsOptions

返回值:Promise<void>

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

写入 UTF-8 文本文件。

示例

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 });

: 1.0.0

参数

名称类型
文件路径文本文件选项
可选配置对象FsOptions

返回值:Promise<void>

指示操作成功或失败的 Promise。