跳至主要内容

文件系统

访问文件系统。

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

参数

名称类型
sourcestring
destinationstring
optionsFsOptions

返回: 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

参数

名称类型
dirstring
optionsFsDirOptions

返回: 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

参数

名称类型
路径string
optionsFsOptions

返回: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

参数

名称类型
filePathstring
optionsFsOptions

返回: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

参数

名称类型
dirstring
optionsFsDirOptions

返回: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

参数

名称类型
filePathstring
optionsFsOptions

返回: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

参数

名称类型
dirstring
optionsFsDirOptions

返回: 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

参数

名称类型
文件string
optionsFsOptions

返回: 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

参数

名称类型
旧路径string
新路径string
optionsFsOptions

返回: 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

参数

名称类型说明
路径string-
内容BinaryFileContents-
选项?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

参数

名称类型说明
文件FsBinaryFileOption包含文件路径和内容的对象。
选项?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

参数

名称类型
路径string
内容string
选项?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

参数

名称类型
文件FsTextFileOption
选项?FsOptions

返回: Promise<void>

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