文件系统(fs)

访问文件系统。

当在 tauri.conf.json 中设置 build.withGlobalTauritrue 时,该包也可以通过 window.__TAURI__.fs 访问。

这些 API 必须添加到 tauri.conf.jsontauri.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 directorydatabases 文件夹中的文件:

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

BaseDirectory

Since: 1.0.0

枚举成员

名称

类型

定义在

Audio

1

fs.ts:81

Cache

2

fs.ts:82

Config

3

fs.ts:83

Data

4

fs.ts:84

LocalData

5

fs.ts:85

Desktop

6

fs.ts:86

Document

7

fs.ts:87

Download

8

fs.ts:88

Executable

9

fs.ts:89

Font

10

fs.ts:90

Home

11

fs.ts:91

Picture

12

fs.ts:92

Public

13

fs.ts:93

Runtime

14

fs.ts:94

Template

15

fs.ts:95

Video

16

fs.ts:96

Resource

17

fs.ts:97

App

18

fs.ts:98

Log

19

fs.ts:99

Temp

20

fs.ts:100

AppConfig

21

fs.ts:101

AppData

22

fs.ts:102

AppLocalData

23

fs.ts:103

AppCache

24

fs.ts:104

AppLog

25

fs.ts:105

Interfaces

FileEntry

Since: 1.0.0

属性

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

定义在: fs.ts:161

  • Optional name: string

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

定义在: fs.ts:159

  • path: string

定义在: fs.ts:154

FsBinaryFileOption

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

Since: 1.0.0

属性

字节数组的内容。

定义在: fs.ts:147

  • path: string

要写入的文件路径。

定义在: fs.ts:145

FsDirOptions

Since: 1.0.0

属性

定义在: fs.ts:120

  • Optional recursive: boolean

定义在: fs.ts:121

FsOptions

Since: 1.0.0

属性

定义在: fs.ts:112

FsTextFileOption

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

Since: 1.0.0

属性

  • contents: string

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

定义在: fs.ts:133

  • path: string

要写入的文件路径。

定义在: fs.ts:131

Type Aliases

BinaryFileContents

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

定义在: fs.ts:136

Functions

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

Since: 1.0.0

参数

名称

类型

source

string

destination

string

options

FsOptions

返回: Promise<void>

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

createDir

创建目录。如果路径的父组件之一不存在且未将 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

参数

名称

类型

dir

string

options

FsOptions

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

参数

名称

类型

path

string

options

FsOptions

返回: Promise<boolean>

readBinaryFile

将文件读取为字节数组。

示例

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

参数

名称

类型

filePath

string

options

FsOptions

返回: Promise<Uint8Array>

readDir

列出目录文件。

示例

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

参数

名称

类型

dir

string

options

FsOptions

返回: Promise<FileEntry[]>

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

参数

名称

类型

filePath

string

options

FsOptions

返回: Promise<string>

removeDir

删除目录。如果目录不为空且未将 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

参数

名称

类型

dir

string

options

FsDirOptions

返回: 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 });

Since: 1.0.0

参数

名称

类型

file

string

options

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

Since: 1.0.0

参数

名称

类型

oldPath

string

newPath

string

options

FsOptions

返回: Promise<void>

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

writeBinaryFile

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

示例

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

参数

名称

类型

描述

path

string

-

contents

BinaryFileContents

-

options

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

Since: 1.0.0

参数

名称

类型

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({ path: 'app.conf', contents: 'file contents' }, { dir: BaseDirectory.AppConfig });

Since: 1.0.0

参数

名称

类型

path

string

options

FsOptions

返回: Promise<void>

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