文件系统(fs)
访问文件系统。
当在 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 加入白名单,以获得最佳的包大小和安全性。
Security
该模块防止路径遍历,不允许使用绝对路径或父目录组件(即不允许使用"/usr/path/to/file"或"../path/to/file"路径)。使用此 API 访问的路径必须相对于其中一个 BaseDirectory,因此如果需要访问任意文件系统路径,必须在核心层编写此类逻辑。
该 API 具有强制限制使用全局模式访问路径的范围配置。
范围配置是一个描述允许的文件夹路径的全局模式数组。例如,此范围配置仅允许访问 $APPDATA directory 的 databases 文件夹中的文件:
{
"tauri": {
"allowlist": {
"fs": {
"scope": ["$APPDATA/databases/*"]
}
}
}
}
请注意 $APPDATA
变量的使用。该值在运行时注入,解析为 app data directory。可用的变量有:$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。
References
Dir
BaseDirectory 的重命名以及重新导出。
writeFile
writeTextFile 的重命名以及重新导出。
Enumerations
Interfaces
FileEntry
Since: 1.0.0
属性
-
Optional
children
:FileEntry[]
如果是目录,此条目的子项;否则为null
定义在: fs.ts:161
-
Optional
name
:string
目录/文件的名称可以为null,如果路径以 ..
结尾
定义在: fs.ts:159
-
path:
string
定义在: fs.ts:154
FsBinaryFileOption
用于将二进制数据写入文件的选项对象。
Since: 1.0.0
属性
-
contents:
BinaryFileContents
字节数组的内容。
定义在: fs.ts:147
-
path:
string
要写入的文件路径。
定义在: fs.ts:145
FsDirOptions
Since: 1.0.0
属性
-
Optional
dir:BaseDirectory
定义在: fs.ts:120
-
Optional
recursive:boolean
定义在: fs.ts:121
Type Aliases
BinaryFileContents
-
BinaryFileContents:
Iterable
<number
> |ArrayLike
<number
> |ArrayBuffer
定义在: fs.ts:136
Functions
copyFile
将文件复制到目的地。
示例
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
参数
名称 |
类型 |
|
|
|
|
|
返回: 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 });
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
返回: Promise
<void
>
指示操作成功或失败的Promise。
exists
检查路径是否存在。
示例
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
参数
名称 |
类型 |
|
|
|
返回: 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 });
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
返回: 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)
}
}
}
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
readTextFile
将文件读取为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 });
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
返回: 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 });
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
返回: Promise
<void
>
指示操作成功或失败的Promise。
removeFile
删除文件。
示例
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
参数
名称 |
类型 |
|
|
|
返回: Promise
<void
>
指示操作成功或失败的Promise。
renameFile
重命名文件。
示例
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
参数
名称 |
类型 |
|
|
|
|
|
返回: 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 });
Since: 1.0.0
参数
名称 |
类型 |
描述 |
|
|
- |
|
- |
|
|
配置对象。 |
返回: Promise
<void
>
指示操作成功或失败的Promise。
writeTextFile
写一个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 });
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
|
|
返回: 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 });
Since: 1.0.0
参数
名称 |
类型 |
|
|
|
返回: Promise
<void
>
指示操作成功或失败的Promise。