跳转到内容
Tauri

文件系统

访问文件系统。

支持的平台

此插件至少需要 Rust 版本 1.77.2

平台 级别 备注
Windows

通过 MSI 或 NSIS 安装的程序在 perMachineboth 模式下需要管理员权限才能在 $RESOURCES 文件夹中进行写入操作

Linux

默认情况下,对 $RESOURCES 文件夹的写入访问受限

macOS

默认情况下,对 $RESOURCES 文件夹的写入访问受限

Android

默认情况下,访问受限到应用程序文件夹

iOS

默认情况下,访问受限到应用程序文件夹

设置

开始使用 fs 插件。

使用您项目的包管理器添加依赖项

npm run tauri add fs

配置

Android

当使用 audio、cache、documents、downloads、picture、public 或 video 目录时,您的应用程序必须具有访问外部存储的权限。

将以下权限添加到 manifest 标签中 gen/android/app/src/main/AndroidManifest.xml 文件

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS

苹果要求应用程序开发者指定 API 使用的批准原因,以提高用户隐私。

您必须在 src-tauri/gen/apple 文件夹中创建一个名为 PrivacyInfo.xcprivacy 的文件,并包含所需的关键字 NSPrivacyAccessedAPICategoryFileTimestamp 和推荐理由 C617.1

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
</array>
</dict>
</plist>

使用方法

fs 插件同时支持 JavaScript 和 Rust。

import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';
// when using `"withGlobalTauri": true`, you may use
// const { exists, BaseDirectory } = window.__TAURI__.fs;
// Check if the `$APPDATA/avatar.png` file exists
await exists('avatar.png', { baseDir: BaseDirectory.AppData });

安全

本模块防止路径遍历,不允许使用父目录访问器(即不允许使用如 “/usr/path/to/../file” 或 “../path/to/file” 的路径)。使用此 API 访问的路径必须是相对于某个 基础目录 或使用 路径 API 创建的。

更多信息请参见 @tauri-apps/plugin-fs - 安全

路径

文件系统插件提供两种路径操作方式:基础目录路径 API

  • 基础目录

    每个 API 都有一个选项参数,允许你定义一个起作用的作为操作工作目录的 baseDir

    import { readFile } from '@tauri-apps/plugin-fs';
    const contents = await readFile('avatars/tauri.png', {
    baseDir: BaseDirectory.Home,
    });

    在上面的示例中,因为使用的是 Home 基础目录,所以读取了 ~/avatars/tauri.png 文件。

  • 路径 API

    你也可以使用路径 API 来执行路径操作。

    import { readFile } from '@tauri-apps/plugin-fs';
    import * as path from '@tauri-apps/api/path';
    const home = await path.homeDir();
    const contents = await readFile(await path.join(home, 'avatars/tauri.png'));

文件

创建

创建一个文件并返回其句柄。如果文件已经存在,则将被截断。

import { create, BaseDirectory } from '@tauri-apps/plugin-fs';
const file = await create('foo/bar.txt', { baseDir: BaseDirectory.App });
await file.write(new TextEncoder().encode('Hello world'));
await file.close();

编写

该插件提供单独的 API 用于写入文本和二进制文件以提高性能。

  • 文本文件

    import { writeTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';
    const contents = JSON.stringify({ notifications: true });
    await writeTextFile('config.json', contents, {
    baseDir: BaseDirectory.AppConfig,
    });
  • 二进制文件

    import { writeFile, BaseDirectory } from '@tauri-apps/plugin-fs';
    const contents = new Uint8Array(); // fill a byte array
    await writeFile('config', contents, {
    baseDir: BaseDirectory.AppConfig,
    });

打开

打开文件并返回其句柄。使用此 API,你可以更详细地控制如何打开文件(只读模式、写模式、追加而不是覆盖、仅在不存在时创建等)。

  • 只读

    这是默认模式。

    import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
    const file = await open('foo/bar.txt', {
    read: true,
    baseDir: BaseDirectory.App,
    });
    const buf = new Uint8Array();
    await file.read(buf);
    const textContents = new TextDecoder().decode(buf);
    await file.close();
  • 只写

    import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
    const file = await open('foo/bar.txt', {
    write: true,
    baseDir: BaseDirectory.App,
    });
    await file.write(new TextEncoder().encode('Hello world'));
    await file.close();

    默认情况下,任何 file.write() 调用都会截断文件。请参阅以下示例了解如何将追加到现有内容中。

  • 追加

    import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
    const file = await open('foo/bar.txt', {
    append: true,
    baseDir: BaseDirectory.App,
    });
    await file.write(new TextEncoder().encode('world'));
    await file.close();

    注意,将 { append: true } 的效果与 { write: true, append: true } 相同。

  • 截断

    当设置 truncate 选项且文件已存在时,文件将截断到长度 0。

    import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
    const file = await open('foo/bar.txt', {
    write: true,
    truncate: true,
    baseDir: BaseDirectory.App,
    });
    await file.write(new TextEncoder().encode('world'));
    await file.close();

    此选项需要将 write 设置为 true

    如果要使用多个 file.write() 调用来重写现有文件,可以使用此选项与 append 选项。

  • 创建

    默认情况下,open API 只打开现有文件。如果要创建文件(如果不存在则打开),请将 create 设置为 true

    import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
    const file = await open('foo/bar.txt', {
    write: true,
    create: true,
    baseDir: BaseDirectory.App,
    });
    await file.write(new TextEncoder().encode('world'));
    await file.close();

    要创建文件,必须将 writeappend 也设置为 true

    如果要失败如果文件已存在,请参阅 createNew

  • createNew

    createNewcreate 的工作方式类似,但如果文件不存在,则操作失败。

    import { open, BaseDirectory } from '@tauri-apps/plugin-fs';
    const file = await open('foo/bar.txt', {
    write: true,
    createNew: true,
    baseDir: BaseDirectory.App,
    });
    await file.write(new TextEncoder().encode('world'));
    await file.close();

    要创建文件,必须将 write 也设置为 true

读取

该插件提供针对读取文本和二进制文件分别的单独 API 以提高性能。

  • 文本文件

    import { readTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';
    const configToml = await readTextFile('config.toml', {
    baseDir: BaseDirectory.AppConfig,
    });

    如果文件很大,你可以使用 readTextFileLines API 来流式传输其行。

    import { readTextFileLines, BaseDirectory } from '@tauri-apps/plugin-fs';
    const lines = await readTextFileLines('app.logs', {
    baseDir: BaseDirectory.AppLog,
    });
    for await (const line of lines) {
    console.log(line);
    }
  • 二进制文件

    import { readFile, BaseDirectory } from '@tauri-apps/plugin-fs';
    const icon = await readFile('icon.png', {
    baseDir: BaseDirectory.Resources,
    });

删除

调用 remove() 来删除文件。如果文件不存在,则返回一个错误。

import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';
await remove('user.db', { baseDir: BaseDirectory.AppLocalData });

复制

copyFile 函数接收源路径和目标路径。请注意,您必须单独为每个基本目录进行配置。

import { copyFile, BaseDirectory } from '@tauri-apps/plugin-fs';
await copyFile('user.db', 'user.db.bk', {
fromPathBaseDir: BaseDirectory.AppLocalData,
toPathBaseDir: BaseDirectory.Temp,
});

在上面的示例中,

存在

使用 exists() 函数检查文件是否存在

import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';
const tokenExists = await exists('token', {
baseDir: BaseDirectory.AppLocalData,
});

元数据

可以使用 statlstat 函数检索文件元数据。stat 跟随符号链接(如果指向的文件超出了作用域,则返回一个错误),而 lstat 不跟随符号链接,返回符号链接本身的统计信息。

import { stat, BaseDirectory } from '@tauri-apps/plugin-fs';
const metadata = await stat('app.db', {
baseDir: BaseDirectory.AppLocalData,
});

重命名

rename 函数接收源路径和目标路径。请注意,您必须单独为每个基本目录进行配置。

import { rename, BaseDirectory } from '@tauri-apps/plugin-fs';
await rename('user.db.bk', 'user.db', {
fromPathBaseDir: BaseDirectory.AppLocalData,
toPathBaseDir: BaseDirectory.Temp,
});

在上面的示例中,

截断

截断或扩展指定的文件以达到特定的文件长度(默认为0)。

  • 截断到0长度
import { truncate } from '@tauri-apps/plugin-fs';
await truncate('my_file.txt', 0, { baseDir: BaseDirectory.AppLocalData });
  • 截断到指定的长度
import {
truncate,
readTextFile,
writeTextFile,
BaseDirectory,
} from '@tauri-apps/plugin-fs';
const filePath = 'file.txt';
await writeTextFile(filePath, 'Hello World', {
baseDir: BaseDirectory.AppLocalData,
});
await truncate(filePath, 7, {
baseDir: BaseDirectory.AppLocalData,
});
const data = await readTextFile(filePath, {
baseDir: BaseDirectory.AppLocalData,
});
console.log(data); // "Hello W"

目录

创建

要创建目录,调用 mkdir 函数

import { mkdir, BaseDirectory } from '@tauri-apps/plugin-fs';
await mkdir('images', {
baseDir: BaseDirectory.AppLocalData,
});

读取

readDir 函数递归地列出目录条目

import { readDir, BaseDirectory } from '@tauri-apps/plugin-fs';
const entries = await readDir('users', { baseDir: BaseDirectory.AppLocalData });

删除

调用 remove() 删除目录。如果目录不存在,则返回一个错误。

import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';
await remove('images', { baseDir: BaseDirectory.AppLocalData });

如果目录不为空,必须将 recursive 选项设置为 true

import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';
await remove('images', {
baseDir: BaseDirectory.AppLocalData,
recursive: true,
});

存在

使用 exists() 函数检查目录是否存在

import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';
const tokenExists = await exists('images', {
baseDir: BaseDirectory.AppLocalData,
});

元数据

可以使用 statlstat 函数检索目录元数据。stat 跟随符号链接(如果指向的文件超出了作用域,则返回一个错误),而 lstat 不跟随符号链接,返回符号链接本身的统计信息。

import { stat, BaseDirectory } from '@tauri-apps/plugin-fs';
const metadata = await stat('databases', {
baseDir: BaseDirectory.AppLocalData,
});

监视变更

要监视目录或文件的变化,请使用 watchwatchImmediate 函数。

  • watch

    watch 具有防抖功能,因此它只在一定的延迟后才会发出事件

    import { watch, BaseDirectory } from '@tauri-apps/plugin-fs';
    await watch(
    'app.log',
    (event) => {
    console.log('app.log event', event);
    },
    {
    baseDir: BaseDirectory.AppLog,
    delayMs: 500,
    }
    );
  • watchImmediate

    watchImmediate 立即通知监听器事件

    import { watchImmediate, BaseDirectory } from '@tauri-apps/plugin-fs';
    await watchImmediate(
    'logs',
    (event) => {
    console.log('logs directory event', event);
    },
    {
    baseDir: BaseDirectory.AppLog,
    recursive: true,
    }
    );

默认情况下,在目录上的监视操作不是递归的。要递归监视所有子目录的变化,请将 recursive 选项设置为 true

权限

默认情况下,所有潜在的插件命令和作用域都受到阻止,无法访问。您必须修改 capabilities 配置中的权限才能启用这些功能。

有关更多信息,请参阅 权限概述 以及使用插件权限的 逐步指南

src-tauri/capabilities/default.json
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": [
"fs:default",
{
"identifier": "fs:allow-exists",
"allow": [{ "path": "$APPDATA/*" }]
}
]
}

默认权限

此权限集一系列描述了 fs 插件默认启用了哪些或拒绝哪些类型的文件系统访问。

授予的权限

此默认权限集默认启用了对应用程序特定目录(AppConfig、AppData、AppLocalData、AppCache、AppLog)的读取访问以及它们内部创建的所有文件和子目录。这些目录的位置取决于操作系统,以及应用程序运行的位置。

通常,这些目录需要在应用程序运行时手动创建,在访问该目录中的文件或文件夹之前才可能。

因此,也允许通过 mkdir 命令创建所有这些目录。

拒绝的权限

此默认权限集默认防止访问 Tauri 应用程序的关键组件。在 Windows 上,拒绝了对 webview 数据文件夹的访问。

此默认权限集中包含的权限

  • create-app-specific-dirs
  • read-app-specific-dirs-recursive
  • deny-default

权限表

标识符 描述

fs:allow-app-read-recursive

这允许对完整的应用程序文件夹、文件和子文件夹进行完全递归读取访问。

fs:allow-app-write-recursive

这允许对完整的应用程序文件夹、文件和子文件夹进行完全递归写入访问。

fs:allow-app-read

这允许对应用程序文件夹进行非递归读取访问。

fs:allow-app-write

这允许对应用程序文件夹进行非递归写入访问。

fs:allow-app-meta-recursive

这允许对应用程序文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-app-meta

这允许对应用程序文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-app-recursive

此作用域允许递归访问完整的应用程序文件夹,包括子目录和文件。

fs:scope-app

此作用域允许访问应用程序文件夹中的所有文件和顶级目录的内容列表。

fs:scope-app-index

此作用域允许列出应用程序目录中的所有文件和文件夹。

fs:allow-appcache-read-recursive

这允许对完整的应用程序缓存文件夹($APPCACHE)进行完全递归读取访问。

fs:allow-appcache-write-recursive

这允许对完整的应用程序缓存文件夹($APPCACHE)进行完全递归写入访问。

fs:allow-appcache-read

这允许对应用程序缓存文件夹($APPCACHE)进行非递归读取访问。

fs:allow-appcache-write

这允许对应用程序缓存文件夹($APPCACHE)进行非递归写入访问。

fs:allow-appcache-meta-recursive

这允许对应用程序缓存文件夹($APPCACHE)的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-appcache-meta

这允许对应用程序缓存文件夹($APPCACHE)的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-appcache-recursive

此作用域允许递归访问完整的应用程序缓存文件夹($APPCACHE),包括子目录和文件。

fs:scope-appcache

此作用域允许访问应用程序缓存文件夹($APPCACHE)中的所有文件和顶级目录的内容列表。

fs:scope-appcache-index

此作用域允许列出应用程序缓存文件夹($APPCACHE)中的所有文件和文件夹。

fs:allow-appconfig-read-recursive

这允许对完整的应用程序配置文件夹($APPCONFIG)进行完全递归读取访问。

fs:allow-appconfig-write-recursive

这允许对完整的应用程序配置文件夹($APPCONFIG)进行完全递归写入访问。

fs:allow-appconfig-read

这允许对应用程序配置文件夹($APPCONFIG)进行非递归读取访问。

fs:allow-appconfig-write

这允许对应用程序配置文件夹($APPCONFIG)进行非递归写入访问。

fs:allow-appconfig-meta-recursive

这允许对应用程序配置文件夹($APPCONFIG)的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-appconfig-meta

这允许对应用程序配置文件夹($APPCONFIG)的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-appconfig-recursive

此作用域允许递归访问完整的应用程序配置文件夹($APPCONFIG),包括子目录和文件。

fs:scope-appconfig

此作用域允许访问应用程序配置文件夹($APPCONFIG)中的所有文件和顶级目录的内容列表。

fs:scope-appconfig-index

此作用域允许列出应用程序配置文件夹($APPCONFIG)中的所有文件和文件夹。

fs:allow-appdata-read-recursive

这允许对完整的$APPDATA文件夹、文件和子目录进行完全递归读取访问。

fs:允许-appdata写入递归

这允许对完整的$APPDATA文件夹、文件和子目录进行完全递归写入访问。

fs:允许-appdata读取

这允许对$APPDATA文件夹进行非递归读取访问。

fs:允许-appdata写入

这允许对$APPDATA文件夹进行非递归写入访问。

fs:允许-appdata元-递归

这允许对$APPDATA文件夹的元数据以及文件列表和统计数据进行完全递归读取访问。

fs:允许-appdata元

这允许对$APPDATA文件夹的元数据以及文件列表和统计数据进行非递归读取访问。

fs:作用域-appdata递归

这个作用域允许对完整的$APPDATA文件夹进行递归访问,包括子目录和文件。

fs:作用域-appdata

这个作用域允许访问$APPDATA文件夹中的所有文件和顶级目录的内容列表。

fs:作用域-appdata索引

这个作用域允许列出$APPDATA文件夹中的所有文件和文件夹。

fs:允许-applocaldata读取递归

这允许对完整的$APPLOCALDATA文件夹、文件和子目录进行完全递归读取访问。

fs:允许-applocaldata写入递归

这允许对完整的$APPLOCALDATA文件夹、文件和子目录进行完全递归写入访问。

fs:允许-applocaldata读取

这允许对$APPLOCALDATA文件夹进行非递归读取访问。

fs:允许-applocaldata写入

这允许对$APPLOCALDATA文件夹进行非递归写入访问。

fs:允许-applocaldata元-递归

这允许对$APPLOCALDATA文件夹的元数据以及文件列表和统计数据进行完全递归读取访问。

fs:允许-applocaldata元

这允许对$APPLOCALDATA文件夹的元数据以及文件列表和统计数据进行非递归读取访问。

fs:作用域-applocaldata递归

这个作用域允许对完整的$APPLOCALDATA文件夹进行递归访问,包括子目录和文件。

fs:作用域-applocaldata

这个作用域允许访问$APPLOCALDATA文件夹中的所有文件和顶级目录的内容列表。

fs:作用域-applocaldata索引

这个作用域允许列出$APPLOCALDATA文件夹中的所有文件和文件夹。

fs:允许-applog读取递归

这允许对完整的$APPLOG文件夹、文件和子目录进行完全递归读取访问。

fs:允许-applog写入递归

这允许对完整的$APPLOG文件夹、文件和子目录进行完全递归写入访问。

fs:允许-applog读取

这允许对$APPLOG文件夹进行非递归读取访问。

fs:允许-applog写入

这允许对$APPLOG文件夹进行非递归写入访问。

fs:允许-applog元-递归

这允许对$APPLOG文件夹的元数据以及文件列表和统计数据进行完全递归读取访问。

fs:允许-applog元

这允许对$APPLOG文件夹的元数据以及文件列表和统计数据进行非递归读取访问。

fs:作用域-applog递归

这个作用域允许对完整的$APPLOG文件夹进行递归访问,包括子目录和文件。

fs:作用域-applog

这个作用域允许访问$APPLOG文件夹中的所有文件和顶级目录的内容列表。

fs:作用域-applog索引

这个作用域允许列出$APPLOG文件夹中的所有文件和文件夹。

fs:允许-audio读取递归

这允许对完整的$AUDIO文件夹、文件和子目录进行完全递归读取访问。

fs:允许-audio写入递归

这允许对完整的$AUDIO文件夹、文件和子目录进行完全递归写入访问。

fs:允许-audio读取

这允许对$AUDIO文件夹进行非递归读取访问。

fs:允许-audio写入

这允许对$AUDIO文件夹进行非递归写入访问。

fs:允许-audio元-递归

这允许对$AUDIO文件夹的元数据以及文件列表和统计数据进行完全递归读取访问。

fs:允许-audio元

这允许对$AUDIO文件夹的元数据以及文件列表和统计数据进行非递归读取访问。

fs:scope-audio-recursive

此作用域允许递归访问完整的 $AUDIO 文件夹,包括子目录和文件。

fs:scope-audio

此作用域允许访问 $AUDIO 文件夹中的所有文件以及顶级目录的列表内容。

fs:scope-audio-index

此作用域允许列出 $AUDIO 文件夹中的所有文件和文件夹。

fs:allow-cache-read-recursive

这允许对完整 $CACHE 文件夹、文件和子目录进行完全递归读取访问。

fs:allow-cache-write-recursive

这允许对完整 $CACHE 文件夹、文件和子目录进行完全递归写入访问。

fs:allow-cache-read

这允许对 $CACHE 文件夹进行非递归读取访问。

fs:allow-cache-write

这允许对 $CACHE 文件夹进行非递归写入访问。

fs:allow-cache-meta-recursive

这允许对 $CACHE 文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-cache-meta

这允许对 $CACHE 文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-cache-recursive

此作用域允许递归访问完整的 $CACHE 文件夹,包括子目录和文件。

fs:scope-cache

此作用域允许访问 $CACHE 文件夹中的所有文件以及顶级目录的列表内容。

fs:scope-cache-index

此作用域允许列出 $CACHE 文件夹中的所有文件和文件夹。

fs:allow-config-read-recursive

这允许对完整 $CONFIG 文件夹、文件和子目录进行完全递归读取访问。

fs:allow-config-write-recursive

这允许对完整 $CONFIG 文件夹、文件和子目录进行完全递归写入访问。

fs:allow-config-read

这允许对 $CONFIG 文件夹进行非递归读取访问。

fs:allow-config-write

这允许对 $CONFIG 文件夹进行非递归写入访问。

fs:allow-config-meta-recursive

这允许对 $CONFIG 文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-config-meta

这允许对 $CONFIG 文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-config-recursive

此作用域允许递归访问完整的 $CONFIG 文件夹,包括子目录和文件。

fs:scope-config

此作用域允许访问 $CONFIG 文件夹中的所有文件以及顶级目录的列表内容。

fs:scope-config-index

此作用域允许列出 $CONFIG 文件夹中的所有文件和文件夹。

fs:allow-data-read-recursive

这允许对完整 $DATA 文件夹、文件和子目录进行完全递归读取访问。

fs:allow-data-write-recursive

这允许对完整 $DATA 文件夹、文件和子目录进行完全递归写入访问。

fs:allow-data-read

这允许对 $DATA 文件夹进行非递归读取访问。

fs:allow-data-write

这允许对 $DATA 文件夹进行非递归写入访问。

fs:allow-data-meta-recursive

这允许对 $DATA 文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-data-meta

这允许对 $DATA 文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-data-recursive

此作用域允许递归访问完整的 $DATA 文件夹,包括子目录和文件。

fs:scope-data

此作用域允许访问 $DATA 文件夹下的所有文件以及顶级目录的内容。

fs:scope-data-index

此作用域允许列出 $DATA 文件夹下的所有文件和文件夹。

fs:allow-desktop-read-recursive

这允许完全递归读取访问整个 $DESKTOP 文件夹,包括文件和子目录。

fs:allow-desktop-write-recursive

这允许完全递归写入访问整个 $DESKTOP 文件夹,包括文件和子目录。

fs:allow-desktop-read

这允许非递归读取访问 $DESKTOP 文件夹。

fs:allow-desktop-write

这允许非递归写入访问 $DESKTOP 文件夹。

fs:allow-desktop-meta-recursive

这允许完全递归读取访问 $DESKTOP 文件夹的元数据,包括文件列表和统计信息。

fs:allow-desktop-meta

这允许非递归读取访问 $DESKTOP 文件夹的元数据,包括文件列表和统计信息。

fs:scope-desktop-recursive

此作用域允许递归访问整个 $DESKTOP 文件夹,包括子目录和文件。

fs:scope-desktop

此作用域允许访问 $DESKTOP 文件夹下的所有文件以及顶级目录的内容。

fs:scope-desktop-index

此作用域允许列出 $DESKTOP 文件夹下的所有文件和文件夹。

fs:allow-document-read-recursive

这允许完全递归读取访问整个 $DOCUMENT 文件夹,包括文件和子目录。

fs:allow-document-write-recursive

这允许完全递归写入访问整个 $DOCUMENT 文件夹,包括文件和子目录。

fs:allow-document-read

这允许非递归读取访问 $DOCUMENT 文件夹。

fs:allow-document-write

这允许非递归写入访问 $DOCUMENT 文件夹。

fs:allow-document-meta-recursive

这允许完全递归读取访问 $DOCUMENT 文件夹的元数据,包括文件列表和统计信息。

fs:allow-document-meta

这允许非递归读取访问 $DOCUMENT 文件夹的元数据,包括文件列表和统计信息。

fs:scope-document-recursive

此作用域允许递归访问整个 $DOCUMENT 文件夹,包括子目录和文件。

fs:scope-document

此作用域允许访问 $DOCUMENT 文件夹下的所有文件以及顶级目录的内容。

fs:scope-document-index

此作用域允许列出 $DOCUMENT 文件夹下的所有文件和文件夹。

fs:allow-download-read-recursive

这允许完全递归读取访问整个 $DOWNLOAD 文件夹,包括文件和子目录。

fs:allow-download-write-recursive

这允许完全递归写入访问整个 $DOWNLOAD 文件夹,包括文件和子目录。

fs:allow-download-read

这允许非递归读取访问 $DOWNLOAD 文件夹。

fs:allow-download-write

这允许非递归写入访问 $DOWNLOAD 文件夹。

fs:allow-download-meta-recursive

这允许完全递归读取访问 $DOWNLOAD 文件夹的元数据,包括文件列表和统计信息。

fs:allow-download-meta

这允许非递归读取访问 $DOWNLOAD 文件夹的元数据,包括文件列表和统计信息。

fs:scope-download-recursive

此作用域允许递归访问整个 $DOWNLOAD 文件夹,包括子目录和文件。

fs:scope-download

此作用域允许访问 $DOWNLOAD 文件夹中的所有文件和顶级目录的内容列表。

fs:scope-download-index

此作用域允许列出 $DOWNLOAD 文件夹中的所有文件和文件夹。

fs:allow-exe-read-recursive

这允许对整个 $EXE 文件夹及其文件和子目录完全递归读取访问。

fs:allow-exe-write-recursive

这允许对整个 $EXE 文件夹及其文件和子目录完全递归写入访问。

fs:allow-exe-read

这允许对 $EXE 文件夹非递归读取访问。

fs:allow-exe-write

这允许对 $EXE 文件夹非递归写入访问。

fs:allow-exe-meta-recursive

这允许对 $EXE 文件夹元数据完全递归读取访问,包括文件列表和统计信息。

fs:allow-exe-meta

这允许对 $EXE 文件夹元数据非递归读取访问,包括文件列表和统计信息。

fs:scope-exe-recursive

此作用域允许递归访问整个 $EXE 文件夹,包括子目录和文件。

fs:scope-exe

此作用域允许访问 $EXE 文件夹中的所有文件和顶级目录的内容列表。

fs:scope-exe-index

此作用域允许列出 $EXE 文件夹中的所有文件和文件夹。

fs:allow-font-read-recursive

这允许对整个 $FONT 文件夹及其文件和子目录完全递归读取访问。

fs:allow-font-write-recursive

这允许对整个 $FONT 文件夹及其文件和子目录完全递归写入访问。

fs:allow-font-read

这允许对 $FONT 文件夹非递归读取访问。

fs:allow-font-write

这允许对 $FONT 文件夹非递归写入访问。

fs:allow-font-meta-recursive

这允许对 $FONT 文件夹元数据完全递归读取访问,包括文件列表和统计信息。

fs:allow-font-meta

这允许对 $FONT 文件夹元数据非递归读取访问,包括文件列表和统计信息。

fs:scope-font-recursive

此作用域允许递归访问整个 $FONT 文件夹,包括子目录和文件。

fs:scope-font

此作用域允许访问 $FONT 文件夹中的所有文件和顶级目录的内容列表。

fs:scope-font-index

此作用域允许列出 $FONT 文件夹中的所有文件和文件夹。

fs:allow-home-read-recursive

这允许对整个 $HOME 文件夹及其文件和子目录完全递归读取访问。

fs:allow-home-write-recursive

这允许对整个 $HOME 文件夹及其文件和子目录完全递归写入访问。

fs:allow-home-read

这允许对 $HOME 文件夹非递归读取访问。

fs:allow-home-write

这允许对 $HOME 文件夹非递归写入访问。

fs:allow-home-meta-recursive

这允许对 $HOME 文件夹元数据完全递归读取访问,包括文件列表和统计信息。

fs:allow-home-meta

这允许对 $HOME 文件夹元数据非递归读取访问,包括文件列表和统计信息。

fs:scope-home-recursive

此作用域允许递归访问整个 $HOME 文件夹,包括子目录和文件。

fs:scope-home

此作用域允许访问 $HOME 文件夹中的所有文件和顶级目录的内容列表。

fs:scope-home-index

此作用域允许列出$HOME文件夹中的所有文件和文件夹。

fs:allow-localdata-read-recursive

这允许对完整的$LOCALDATA文件夹、文件和子目录进行完全递归读取访问。

fs:allow-localdata-write-recursive

这允许对完整的$LOCALDATA文件夹、文件和子目录进行完全递归写入访问。

fs:allow-localdata-read

这允许对$LOCALDATA文件夹进行非递归读取访问。

fs:allow-localdata-write

这允许对$LOCALDATA文件夹进行非递归写入访问。

fs:allow-localdata-meta-recursive

这允许对$LOCALDATA文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-localdata-meta

这允许对$LOCALDATA文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-localdata-recursive

此作用域允许对完整的$LOCALDATA文件夹(包括子目录和文件)进行递归访问。

fs:scope-localdata

此作用域允许访问$LOCALDATA文件夹中的所有文件,并列出顶层目录的内容。

fs:scope-localdata-index

此作用域允许列出$LOCALDATA文件夹中的所有文件和文件夹。

fs:allow-log-read-recursive

这允许对完整的$LOG文件夹、文件和子目录进行完全递归读取访问。

fs:allow-log-write-recursive

这允许对完整的$LOG文件夹、文件和子目录进行完全递归写入访问。

fs:allow-log-read

这允许对$LOG文件夹进行非递归读取访问。

fs:allow-log-write

这允许对$LOG文件夹进行非递归写入访问。

fs:allow-log-meta-recursive

这允许对$LOG文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-log-meta

这允许对$LOG文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-log-recursive

此作用域允许对完整的$LOG文件夹(包括子目录和文件)进行递归访问。

fs:scope-log

此作用域允许访问$LOG文件夹中的所有文件,并列出顶层目录的内容。

fs:scope-log-index

此作用域允许列出$LOG文件夹中的所有文件和文件夹。

fs:allow-picture-read-recursive

这允许对完整的$PICTURE文件夹、文件和子目录进行完全递归读取访问。

fs:allow-picture-write-recursive

这允许对完整的$PICTURE文件夹、文件和子目录进行完全递归写入访问。

fs:allow-picture-read

这允许对$PICTURE文件夹进行非递归读取访问。

fs:allow-picture-write

这允许对$PICTURE文件夹进行非递归写入访问。

fs:allow-picture-meta-recursive

这允许对$PICTURE文件夹的元数据进行完全递归读取访问,包括文件列表和统计信息。

fs:allow-picture-meta

这允许对$PICTURE文件夹的元数据进行非递归读取访问,包括文件列表和统计信息。

fs:scope-picture-recursive

此作用域允许对完整的$PICTURE文件夹(包括子目录和文件)进行递归访问。

fs:scope-picture

此作用域允许访问$PICTURE文件夹中的所有文件,并列出顶层目录的内容。

fs:scope-picture-index

此作用域允许列出$PICTURE文件夹中的所有文件和文件夹。

fs:allow-public-read-recursive

这允许对完整的$PUBLIC文件夹、文件和子目录进行完全递归读取访问。

fs:allow-public-write-recursive

这允许对完整的$PUBLIC文件夹、文件和子目录进行完全递归写入访问。

fs:allow-public-read

这允许对$PUBLIC文件夹进行非递归读取访问。

fs:allow-public-write

这允许对$PUBLIC文件夹的非递归写入访问。

fs:allow-public-meta-recursive

这允许对$PUBLIC文件夹元数据的全面递归读取访问,包括文件列表和统计信息。

fs:allow-public-meta

这允许对$PUBLIC文件夹元数据的非递归读取访问,包括文件列表和统计信息。

fs:scope-public-recursive

此作用域允许递归访问完整的$PUBLIC文件夹,包括子目录和文件。

fs:scope-public

此作用域允许访问$PUBLIC文件夹中所有文件和顶级目录的内容列表。

fs:scope-public-index

此作用域允许列出$PUBLIC文件夹中的所有文件和文件夹。

fs:allow-resource-read-recursive

这允许对完整的$RESOURCE文件夹、文件和子目录的全面递归读取访问。

fs:allow-resource-write-recursive

这允许对完整的$RESOURCE文件夹、文件和子目录的全面递归写入访问。

fs:allow-resource-read

这允许对$RESOURCE文件夹的非递归读取访问。

fs:allow-resource-write

这允许对$RESOURCE文件夹的非递归写入访问。

fs:allow-resource-meta-recursive

这允许对$RESOURCE文件夹元数据的全面递归读取访问,包括文件列表和统计信息。

fs:allow-resource-meta

这允许对$RESOURCE文件夹元数据的非递归读取访问,包括文件列表和统计信息。

fs:scope-resource-recursive

此作用域允许递归访问完整的$RESOURCE文件夹,包括子目录和文件。

fs:scope-resource

此作用域允许访问$RESOURCE文件夹中所有文件和顶级目录的内容列表。

fs:scope-resource-index

此作用域允许列出$RESOURCE文件夹中的所有文件和文件夹。

fs:allow-runtime-read-recursive

这允许对完整的$RUNTIME文件夹、文件和子目录的全面递归读取访问。

fs:allow-runtime-write-recursive

这允许对完整的$RUNTIME文件夹、文件和子目录的全面递归写入访问。

fs:allow-runtime-read

这允许对$RUNTIME文件夹的非递归读取访问。

fs:allow-runtime-write

这允许对$RUNTIME文件夹的非递归写入访问。

fs:allow-runtime-meta-recursive

这允许对$RUNTIME文件夹元数据的全面递归读取访问,包括文件列表和统计信息。

fs:allow-runtime-meta

这允许对$RUNTIME文件夹元数据的非递归读取访问,包括文件列表和统计信息。

fs:scope-runtime-recursive

此作用域允许递归访问完整的$RUNTIME文件夹,包括子目录和文件。

fs:scope-runtime

此作用域允许访问$RUNTIME文件夹中所有文件和顶级目录的内容列表。

fs:scope-runtime-index

此作用域允许列出$RUNTIME文件夹中的所有文件和文件夹。

fs:allow-temp-read-recursive

这允许对完整的$TEMP文件夹、文件和子目录的全面递归读取访问。

fs:allow-temp-write-recursive

这允许对完整的$TEMP文件夹、文件和子目录的全面递归写入访问。

fs:allow-temp-read

这允许对$TEMP文件夹的非递归读取访问。

fs:allow-temp-write

这允许对$TEMP文件夹的非递归写入访问。

fs:allow-temp-meta-recursive

这允许对$TEMP文件夹元数据的全面递归读取访问,包括文件列表和统计信息。

fs:allow-temp-meta

这允许对$TEMP文件夹元数据的非递归读取访问,包括文件列表和统计信息。

fs:scope-temp-recursive

此作用域允许递归访问完整的$TEMP文件夹,包括子目录和文件。

fs:scope-temp

此作用域允许访问$TEMP文件夹中所有文件和顶级目录的内容列表。

fs:scope-temp-index

此作用域允许列出$TEMP文件夹中的所有文件和文件夹。

fs:allow-template-read-recursive

这允许完全递归地读取$TEMPLATE文件夹、文件和子目录。

fs:allow-template-write-recursive

这允许完全递归地写入$TEMPLATE文件夹、文件和子目录。

fs:allow-template-read

这允许非递归地读取$TEMPLATE文件夹。

fs:allow-template-write

这允许非递归地写入$TEMPLATE文件夹。

fs:allow-template-meta-recursive

这允许完全递归地读取$TEMPLATE文件夹的元数据,包括文件列表和统计信息。

fs:allow-template-meta

这允许非递归地读取$TEMPLATE文件夹的元数据,包括文件列表和统计信息。

fs:scope-template-recursive

此作用域允许递归地访问完整的$TEMPLATE文件夹,包括子目录和文件。

fs:scope-template

此作用域允许访问$TEMPLATE文件夹中的所有文件以及顶级目录的内容列表。

fs:scope-template-index

此作用域允许列出$TEMPLATE文件夹中的所有文件和文件夹。

fs:allow-video-read-recursive

这允许完全递归地读取完整的$VIDEO文件夹、文件和子目录。

fs:allow-video-write-recursive

这允许完全递归地写入完整的$VIDEO文件夹、文件和子目录。

fs:allow-video-read

这允许非递归地读取$VIDEO文件夹。

fs:allow-video-write

这允许非递归地写入$VIDEO文件夹。

fs:allow-video-meta-recursive

这允许完全递归地读取$VIDEO文件夹的元数据,包括文件列表和统计信息。

fs:allow-video-meta

这允许非递归地读取$VIDEO文件夹的元数据,包括文件列表和统计信息。

fs:scope-video-recursive

此作用域允许递归地访问完整的$VIDEO文件夹,包括子目录和文件。

fs:scope-video

此作用域允许访问$VIDEO文件夹中的所有文件以及顶级目录的内容列表。

fs:scope-video-index

此作用域允许列出$VIDEO文件夹中的所有文件和文件夹。

fs:allow-copy-file

启用copy_file命令,不配置预定义的作用域。

fs:deny-copy-file

拒绝copy_file命令,不配置预定义的作用域。

fs:allow-create

启用create命令,不配置预定义的作用域。

fs:deny-create

拒绝create命令,不配置预定义的作用域。

fs:allow-exists

启用exists命令,不配置预定义的作用域。

fs:deny-exists

拒绝exists命令,不配置预定义的作用域。

fs:allow-fstat

启用fstat命令,不配置预定义的作用域。

fs:deny-fstat

拒绝fstat命令,不配置预定义的作用域。

fs:allow-ftruncate

启用ftruncate命令,不配置预定义的作用域。

fs:deny-ftruncate

拒绝ftruncate命令,不配置预定义的作用域。

fs:allow-lstat

启用lstat命令,不配置预定义的作用域。

fs:deny-lstat

拒绝lstat命令,不配置预定义的作用域。

fs:allow-mkdir

启用mkdir命令,不配置预定义的作用域。

fs:deny-mkdir

拒绝mkdir命令,不配置预定义的作用域。

fs:allow-open

启用open命令,不配置预定义的作用域。

fs:deny-open

拒绝open命令,不配置预定义的作用域。

fs:allow-read

启用读取命令,无需预先配置作用域。

fs:deny-read

拒绝读取命令,无需预先配置作用域。

fs:allow-read-dir

启用read_dir命令,无需预先配置作用域。

fs:deny-read-dir

拒绝read_dir命令,无需预先配置作用域。

fs:allow-read-file

启用read_file命令,无需预先配置作用域。

fs:deny-read-file

拒绝read_file命令,无需预先配置作用域。

fs:allow-read-text-file

启用read_text_file命令,无需预先配置作用域。

fs:deny-read-text-file

拒绝read_text_file命令,无需预先配置作用域。

fs:allow-read-text-file-lines

启用read_text_file_lines命令,无需预先配置作用域。

fs:deny-read-text-file-lines

拒绝read_text_file_lines命令,无需预先配置作用域。

fs:allow-read-text-file-lines-next

启用read_text_file_lines_next命令,无需预先配置作用域。

fs:deny-read-text-file-lines-next

拒绝read_text_file_lines_next命令,无需预先配置作用域。

fs:allow-remove

启用remove命令,无需预先配置作用域。

fs:deny-remove

拒绝remove命令,无需预先配置作用域。

fs:allow-rename

启用rename命令,无需预先配置作用域。

fs:deny-rename

拒绝rename命令,无需预先配置作用域。

fs:allow-seek

启用seek命令,无需预先配置作用域。

fs:deny-seek

拒绝seek命令,无需预先配置作用域。

fs:allow-size

启用size命令,无需预先配置作用域。

fs:deny-size

拒绝size命令,无需预先配置作用域。

fs:allow-stat

启用stat命令,无需预先配置作用域。

fs:deny-stat

拒绝stat命令,无需预先配置作用域。

fs:allow-truncate

启用truncate命令,无需预先配置作用域。

fs:deny-truncate

拒绝truncate命令,无需预先配置作用域。

fs:allow-unwatch

启用unwatch命令,无需预先配置作用域。

fs:deny-unwatch

拒绝unwatch命令,无需预先配置作用域。

fs:allow-watch

启用watch命令,无需预先配置作用域。

fs:deny-watch

拒绝watch命令,无需预先配置作用域。

fs:allow-write

启用write命令,无需预先配置作用域。

fs:deny-write

拒绝write命令,无需预先配置作用域。

fs:allow-write-file

启用write_file命令,无需预先配置作用域。

fs:deny-write-file

拒绝write_file命令,无需预先配置作用域。

fs:allow-write-text-file

启用write_text_file命令,无需预先配置作用域。

fs:deny-write-text-file

拒绝write_text_file命令,无需预先配置作用域。

fs:create-app-specific-dirs

此权限允许创建特定于应用目录。

fs:deny-default

默认拒绝访问危险的与Tauri相关的文件和文件夹。

fs:deny-webview-data-linux

这拒绝了对Linux上$APPLOCALDATA文件夹的读取访问,因为webview数据和配置值存储在这里。允许访问可能导致敏感信息泄露,应认真考虑。

fs:deny-webview-data-windows

这拒绝了对Windows上$APPLOCALDATA/EBWebView文件夹的读取访问,因为webview数据和配置值存储在这里。允许访问可能导致敏感信息泄露,应认真考虑。

fs:read-all

这启用所有读取相关的命令,无需预先配置的访问路径。

fs:read-app-specific-dirs-recursive

此权限允许应用程序特定基本目录的递归读取功能。

fs:read-dirs

这启用了对目录读取和文件元数据相关命令的访问,而不需要任何预配置的路径。

fs:read-files

这启用了对文件读取相关命令的访问,而不需要任何预先配置的可访问路径。

fs:read-meta

这启用了对所有索引或元数据相关命令的访问,而不需要预先配置的可访问路径。

fs:scope

这是一个空的权限,您可以使用它来修改全局范围。

fs:write-all

这启用了对所有写入相关命令的访问,且不需要预先配置的可访问路径。

fs:write-files

这启用了对所有文件写入相关命令的访问,而不需要预先配置的可访问路径。

作用域

此插件权限包括用于定义哪些路径被允许或显式拒绝的作用域。有关作用域的更多信息,请参阅 命令作用域

每个 allowdeny 作用域都必须包括一个数组,列出所有应允许或拒绝的路径。作用域条目采用 { path: string } 格式。

作用域条目可以使用 $<path> 变量来引用常见系统路径,如主目录、应用资源目录和配置目录。以下表格列出了您可以引用的所有常见路径

路径变量
appConfigDir$APPCONFIG
appDataDir$APPDATA
appLocalDataDir$APPLOCALDATA
appcacheDir$APPCACHE
applogDir$APPLOG
audioDir$AUDIO
cacheDir$CACHE
configDir$CONFIG
dataDir$DATA
localDataDir$LOCALDATA
desktopDir$DESKTOP
documentDir$DOCUMENT
downloadDir$DOWNLOAD
executableDir$EXE
fontDir$FONT
homeDir$HOME
pictureDir$PICTURE
publicDir$PUBLIC
runtimeDir$RUNTIME
templateDir$TEMPLATE
videoDir$VIDEO
resourceDir$RESOURCE
tempDir$TEMP

示例

  • 全局作用域

要将作用域应用于任何 fs 命令,请使用 fs:scope 权限

src-tauri/capabilities/default.json
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": [
{
"identifier": "fs:scope",
"allow": [{ "path": "$APPDATA" }, { "path": "$APPDATA/**" }]
}
]
}

要将作用域应用于特定的 fs 命令,请使用权限的对象形式 { "identifier": string, "allow"?: [], "deny"?: [] }

src-tauri/capabilities/default.json
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": [
{
"identifier": "fs:allow-rename",
"allow": [{ "path": "$HOME/**" }]
},
{
"identifier": "fs:allow-rename",
"deny": [{ "path": "$HOME/.config/**" }]
},
{
"identifier": "fs:allow-exists",
"allow": [{ "path": "$APPDATA/*" }]
}
]
}

在上面的示例中,您可以使用 exists API 使用任何 $APPDATA 子路径(不包括子目录)和 rename


© 2025 Tauri 贡献者。CC-BY / MIT