文件系统
访问文件系统。
当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
枚举成员
接口
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
检查路径是否存在。
示例
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
参数
名称 | 类型 |
---|---|
目录路径 | 字符串 |
选项 | 目录选项 |
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。