Sistema de Archivos
Accede al sistema de archivos.
Plataformas Soportadas
Sección titulada “Plataformas Soportadas”Este plugin requiere una versión de Rust de al menos 1.77.2
| Plataforma | Nivel | Notas |
|---|---|---|
| windows | Las aplicaciones instaladas a través de MSI o NSIS en modo | |
| linux | Sin acceso de escritura a la carpeta | |
| macos | Sin acceso de escritura a la carpeta | |
| android | El acceso está restringido a la carpeta de la aplicación por defecto | |
| ios | El acceso está restringido a la carpeta de la aplicación por defecto |
Configuración
Sección titulada “Configuración”Instala el plugin fs para comenzar.
Usa el gestor de paquetes de tu proyecto para agregar la dependencia:
npm run tauri add fsyarn run tauri add fspnpm tauri add fsdeno task tauri add fsbun tauri add fscargo tauri add fs-
Ejecuta el siguiente comando en la carpeta
src-tauripara agregar el plugin a las dependencias del proyecto enCargo.toml:cargo add tauri-plugin-fs -
Modifica
lib.rspara inicializar el plugin:src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().plugin(tauri_plugin_fs::init()).run(tauri::generate_context!()).expect("error while running tauri application");} -
Instala los bindings de JavaScript utilizando tu gestor de paquetes de JavaScript preferido:
npm install @tauri-apps/plugin-fsyarn add @tauri-apps/plugin-fspnpm add @tauri-apps/plugin-fsdeno add npm:@tauri-apps/plugin-fsbun add @tauri-apps/plugin-fs
Configuración
Sección titulada “Configuración”Android
Sección titulada «Android»Al usar los directorios audio, cache, documents, downloads, picture, public o video, tu aplicación debe tener acceso al almacenamiento externo.
Incluye los siguientes permisos en la etiqueta manifest en el archivo 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" />Apple exige a los desarrolladores de aplicaciones especificar razones aprobadas para el uso de APIs para mejorar la privacidad del usuario.
Debes crear un archivo PrivacyInfo.xcprivacy en la carpeta src-tauri/gen/apple
con la clave NSPrivacyAccessedAPICategoryFileTimestamp requerida y la razón recomendada 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>El plugin fs está disponible tanto en JavaScript como en 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 existsawait exists('avatar.png', { baseDir: BaseDirectory.AppData });use tauri_plugin_fs::FsExt;
#[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_fs::init()) .setup(|app| { // allowed the given directory let scope = app.fs_scope(); scope.allow_directory("/path/to/directory", false); dbg!(scope.allowed());
Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application");}Seguridad
Sección titulada “Seguridad”Este módulo evita el recorrido de rutas (path traversal), no permitiendo que se usen accesores de directorio primario (es decir, no se permiten rutas como “/usr/path/to/../file” o “../path/to/file”). Las rutas accedidas con esta API deben ser relativas a uno de los directorios base o crearse con la API path.
Consulta @tauri-apps/plugin-fs - Seguridad para más información.
El plugin de sistema de archivos ofrece dos formas de manipular rutas: el directorio base y la API path.
-
directorio base
Cada API tiene un argumento de opciones que te permite definir un baseDir que actúa como el directorio de trabajo de la operación.
import { readFile } from '@tauri-apps/plugin-fs';const contents = await readFile('avatars/tauri.png', {baseDir: BaseDirectory.Home,});En el ejemplo anterior se lee el archivo ~/avatars/tauri.png ya que estamos usando el directorio base Home.
-
API path
Alternativamente puedes usar las APIs de path para realizar manipulaciones de rutas.
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'));
Archivos
Sección titulada “Archivos”Crea un archivo y devuelve un identificador (handle) para él. Si el archivo ya existe, se trunca.
import { create, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await create('foo/bar.txt', { baseDir: BaseDirectory.AppData });await file.write(new TextEncoder().encode('Hello world'));await file.close();Escribir
Sección titulada “Escribir”El plugin ofrece APIs separadas para escribir archivos de texto y binarios por razones de rendimiento.
-
archivos de texto
import { writeTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';const contents = JSON.stringify({ notifications: true });await writeTextFile('config.json', contents, {baseDir: BaseDirectory.AppConfig,}); -
archivos binarios
import { writeFile, BaseDirectory } from '@tauri-apps/plugin-fs';const contents = new Uint8Array(); // fill a byte arrayawait writeFile('config', contents, {baseDir: BaseDirectory.AppConfig,});
Abre un archivo y devuelve un identificador (handle) para él. Con esta API tienes más control sobre cómo debe abrirse el archivo (modo solo lectura, modo solo escritura, añadir en lugar de sobrescribir, solo crear si no existe, etc).
-
solo lectura
Este es el modo por defecto.
import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open('foo/bar.txt', {read: true,baseDir: BaseDirectory.AppData,});const stat = await file.stat();const buf = new Uint8Array(stat.size);await file.read(buf);const textContents = new TextDecoder().decode(buf);await file.close(); -
solo escritura
import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open('foo/bar.txt', {write: true,baseDir: BaseDirectory.AppData,});await file.write(new TextEncoder().encode('Hello world'));await file.close();Por defecto el archivo se trunca en cualquier llamada a
file.write(). Consulta el siguiente ejemplo para aprender cómo añadir al contenido existente en su lugar. -
añadir (append)
import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open('foo/bar.txt', {append: true,baseDir: BaseDirectory.AppData,});await file.write(new TextEncoder().encode('world'));await file.close();Ten en cuenta que
{ append: true }tiene el mismo efecto que{ write: true, append: true }. -
truncar
Cuando la opción
truncateestá configurada y el archivo ya existe, se truncará a longitud 0.import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open('foo/bar.txt', {write: true,truncate: true,baseDir: BaseDirectory.AppData,});await file.write(new TextEncoder().encode('world'));await file.close();Esta opción requiere que
writeseatrue.Puedes usarla junto con la opción
appendsi quieres reescribir un archivo existente usando múltiples llamadas afile.write(). -
crear
Por defecto la API
opensolo abre archivos existentes. Para crear el archivo si no existe, abriéndolo si ya existe, establececreateentrue:import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open('foo/bar.txt', {write: true,create: true,baseDir: BaseDirectory.AppData,});await file.write(new TextEncoder().encode('world'));await file.close();Para que el archivo sea creado,
writeoappendtambién deben establecerse entrue.Para fallar si el archivo ya existe, consulta
createNew. -
createNew
createNewfunciona de manera similar acreate, pero fallará si el archivo ya existe.import { open, BaseDirectory } from '@tauri-apps/plugin-fs';const file = await open('foo/bar.txt', {write: true,createNew: true,baseDir: BaseDirectory.AppData,});await file.write(new TextEncoder().encode('world'));await file.close();Para que el archivo sea creado,
writetambién debe establecerse entrue.
El plugin ofrece APIs separadas para leer archivos de texto y binarios por razones de rendimiento.
-
archivos de texto
import { readTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';const configToml = await readTextFile('config.toml', {baseDir: BaseDirectory.AppConfig,});Si el archivo es grande, puedes transmitir (stream) sus líneas con la API
readTextFileLines: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);} -
archivos binarios
import { readFile, BaseDirectory } from '@tauri-apps/plugin-fs';const icon = await readFile('icon.png', {baseDir: BaseDirectory.Resources,});
Eliminar
Sección titulada “Eliminar”Llama a remove() para eliminar un archivo. Si el archivo no existe, se devuelve un error.
import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';await remove('user.db', { baseDir: BaseDirectory.AppLocalData });La función copyFile toma las rutas de origen y destino.
Ten en cuenta que debes configurar cada directorio base por separado.
import { copyFile, BaseDirectory } from '@tauri-apps/plugin-fs';await copyFile('user.db', 'user.db.bk', { fromPathBaseDir: BaseDirectory.AppLocalData, toPathBaseDir: BaseDirectory.Temp,});En el ejemplo anterior, el archivo <app-local-data>/user.db se copia a $TMPDIR/user.db.bk.
Usa la función exists() para verificar si existe un archivo:
import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';const tokenExists = await exists('token', { baseDir: BaseDirectory.AppLocalData,});Metadatos
Sección titulada “Metadatos”Los metadatos de los archivos se pueden obtener con las funciones stat y lstat.
stat sigue enlaces simbólicos (y devuelve un error si el archivo real al que apunta no está permitido por el ámbito)
y lstat no sigue enlaces simbólicos, devolviendo la información del propio enlace simbólico.
import { stat, BaseDirectory } from '@tauri-apps/plugin-fs';const metadata = await stat('app.db', { baseDir: BaseDirectory.AppLocalData,});Renombrar
Sección titulada “Renombrar”La función rename toma las rutas de origen y destino.
Ten en cuenta que debes configurar cada directorio base por separado.
import { rename, BaseDirectory } from '@tauri-apps/plugin-fs';await rename('user.db.bk', 'user.db', { fromPathBaseDir: BaseDirectory.AppLocalData, toPathBaseDir: BaseDirectory.Temp,});En el ejemplo anterior, el archivo <app-local-data>/user.db.bk se renombra a $TMPDIR/user.db.
Truncar
Sección titulada “Truncar”Trunca o extiende el archivo especificado para alcanzar la longitud de archivo especificada (por defecto es 0).
- truncar a longitud 0
import { truncate } from '@tauri-apps/plugin-fs';await truncate('my_file.txt', 0, { baseDir: BaseDirectory.AppLocalData });- truncar a una longitud específica
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"Directorios
Sección titulada “Directorios”Para crear un directorio, llama a la función mkdir:
import { mkdir, BaseDirectory } from '@tauri-apps/plugin-fs';await mkdir('images', { baseDir: BaseDirectory.AppLocalData,});La función readDir enumera de forma recursiva las entradas de un directorio:
import { readDir, BaseDirectory } from '@tauri-apps/plugin-fs';const entries = await readDir('users', { baseDir: BaseDirectory.AppLocalData });Eliminar
Sección titulada “Eliminar”Llama a remove() para eliminar un directorio. Si el directorio no existe, se devuelve un error.
import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';await remove('images', { baseDir: BaseDirectory.AppLocalData });Si el directorio no está vacío, la opción recursive debe establecerse en true:
import { remove, BaseDirectory } from '@tauri-apps/plugin-fs';await remove('images', { baseDir: BaseDirectory.AppLocalData, recursive: true,});Usa la función exists() para verificar si existe un directorio:
import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';const tokenExists = await exists('images', { baseDir: BaseDirectory.AppLocalData,});Metadatos
Sección titulada “Metadatos”Los metadatos de un directorio se pueden obtener con las funciones stat y lstat.
stat sigue enlaces simbólicos (y devuelve un error si el archivo real al que apunta no está permitido por el ámbito)
y lstat no sigue enlaces simbólicos, devolviendo la información del propio enlace simbólico.
import { stat, BaseDirectory } from '@tauri-apps/plugin-fs';const metadata = await stat('databases', { baseDir: BaseDirectory.AppLocalData,});Observar cambios
Sección titulada “Observar cambios”Para observar cambios en un directorio o archivo, usa las funciones watch o watchImmediate.
-
watch
watchaplica antirrebote (debounce) para que solo emita eventos tras un cierto retraso: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
watchImmediatenotifica inmediatamente a los oyentes sobre un evento:import { watchImmediate, BaseDirectory } from '@tauri-apps/plugin-fs';await watchImmediate('logs',(event) => {console.log('logs directory event', event);},{baseDir: BaseDirectory.AppLog,recursive: true,});
Por defecto las operaciones de observación en un directorio no son recursivas.
Establece la opción recursive en true para observar cambios de forma recursiva en todos los subdirectorios.
Permisos
Sección titulada “Permisos”De forma predeterminada, todos los comandos y alcances (scopes) potencialmente peligrosos del plugin están bloqueados y no se puede acceder a ellos. Debes modificar los permisos en tu configuración de capabilities para habilitarlos.
Consulta la Visión General de Capacidades para obtener más información y la guía paso a paso para usar permisos de plugins.
{ "$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/*" }] } ]}Permiso Predeterminado
Este conjunto de permisos describe qué tipo de
acceso al sistema de archivos tiene el plugin fs habilitado o denegado por defecto.
Permisos Otorgados
Este conjunto de permisos por defecto habilita acceso de lectura a los directorios específicos de la aplicación (AppConfig, AppData, AppLocalData, AppCache, AppLog) y a todos los archivos y subdirectorios creados en ellos. La ubicación de estos directorios depende del sistema operativo donde se ejecute la aplicación.
En general, la aplicación debe crear manualmente estos directorios en tiempo de ejecución antes de que sea posible acceder a archivos o carpetas en ellos.
Por lo tanto, también se permite crear todas estas carpetas mediante
el comando mkdir.
Permisos Denegados
Este conjunto de permisos por defecto evita el acceso a componentes críticos de la aplicación Tauri por defecto. En Windows se deniega el acceso a la carpeta de datos de webview.
Este conjunto de permisos predeterminado incluye lo siguiente:
create-app-specific-dirsread-app-specific-dirs-recursivedeny-default
Tabla de Permisos
| Identificador | Descripción |
|---|---|
|
|
Esto permite acceso de lectura recursivo completo a todas las carpetas, archivos y subdirectorios de la aplicación. |
|
|
Esto permite acceso de escritura recursivo completo a todas las carpetas, archivos y subdirectorios de la aplicación. |
|
|
Esto permite acceso de lectura no recursivo a las carpetas de la aplicación. |
|
|
Esto permite acceso de escritura no recursivo a las carpetas de la aplicación. |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de las carpetas de la aplicación, incluida la lista de archivos y estadísticas. |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de las carpetas de la aplicación, incluida la lista de archivos y estadísticas. |
|
|
Este ámbito permite acceso recursivo a todas las carpetas de la aplicación, incluyendo subdirectorios y archivos. |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en las carpetas de la aplicación. |
|
|
Este ámbito permite listar todos los archivos y carpetas en los directorios de la aplicación. |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a la carpeta |
|
|
Esto permite acceso de escritura recursivo completo a la carpeta |
|
|
Esto permite acceso de lectura no recursivo a la carpeta |
|
|
Esto permite acceso de escritura no recursivo a la carpeta |
|
|
Esto permite acceso de lectura recursivo completo a los metadatos de la carpeta |
|
|
Esto permite acceso de lectura no recursivo a los metadatos de la carpeta |
|
|
Este ámbito permite acceso recursivo a la carpeta |
|
|
Este ámbito permite acceso a todos los archivos y listar el contenido de directorios de nivel superior en la carpeta |
|
|
Este ámbito permite listar todos los archivos y carpetas en la carpeta |
|
|
Habilita el comando copy_file sin ningún ámbito preconfigurado. |
|
|
Deniega el comando copy_file sin ningún ámbito preconfigurado. |
|
|
Habilita el comando create sin ningún ámbito preconfigurado. |
|
|
Deniega el comando create sin ningún ámbito preconfigurado. |
|
|
Habilita el comando exists sin ningún ámbito preconfigurado. |
|
|
Deniega el comando exists sin ningún ámbito preconfigurado. |
|
|
Habilita el comando fstat sin ningún ámbito preconfigurado. |
|
|
Deniega el comando fstat sin ningún ámbito preconfigurado. |
|
|
Habilita el comando ftruncate sin ningún ámbito preconfigurado. |
|
|
Deniega el comando ftruncate sin ningún ámbito preconfigurado. |
|
|
Habilita el comando lstat sin ningún ámbito preconfigurado. |
|
|
Deniega el comando lstat sin ningún ámbito preconfigurado. |
|
|
Habilita el comando mkdir sin ningún ámbito preconfigurado. |
|
|
Deniega el comando mkdir sin ningún ámbito preconfigurado. |
|
|
Habilita el comando open sin ningún ámbito preconfigurado. |
|
|
Deniega el comando open sin ningún ámbito preconfigurado. |
|
|
Habilita el comando read sin ningún ámbito preconfigurado. |
|
|
Deniega el comando read sin ningún ámbito preconfigurado. |
|
|
Habilita el comando read_dir sin ningún ámbito preconfigurado. |
|
|
Deniega el comando read_dir sin ningún ámbito preconfigurado. |
|
|
Habilita el comando read_file sin ningún ámbito preconfigurado. |
|
|
Deniega el comando read_file sin ningún ámbito preconfigurado. |
|
|
Habilita el comando read_text_file sin ningún ámbito preconfigurado. |
|
|
Deniega el comando read_text_file sin ningún ámbito preconfigurado. |
|
|
Habilita el comando read_text_file_lines sin ningún ámbito preconfigurado. |
|
|
Deniega el comando read_text_file_lines sin ningún ámbito preconfigurado. |
|
|
Habilita el comando read_text_file_lines_next sin ningún ámbito preconfigurado. |
|
|
Deniega el comando read_text_file_lines_next sin ningún ámbito preconfigurado. |
|
|
Habilita el comando remove sin ningún ámbito preconfigurado. |
|
|
Deniega el comando remove sin ningún ámbito preconfigurado. |
|
|
Habilita el comando rename sin ningún ámbito preconfigurado. |
|
|
Deniega el comando rename sin ningún ámbito preconfigurado. |
|
|
Habilita el comando seek sin ningún ámbito preconfigurado. |
|
|
Deniega el comando seek sin ningún ámbito preconfigurado. |
|
|
Habilita el comando size sin ningún ámbito preconfigurado. |
|
|
Deniega el comando size sin ningún ámbito preconfigurado. |
|
|
Habilita el comando start_accessing_security_scoped_resource sin ningún ámbito preconfigurado. |
|
|
Deniega el comando start_accessing_security_scoped_resource sin ningún ámbito preconfigurado. |
|
|
Habilita el comando stat sin ningún ámbito preconfigurado. |
|
|
Deniega el comando stat sin ningún ámbito preconfigurado. |
|
|
Habilita el comando stop_accessing_security_scoped_resource sin ningún ámbito preconfigurado. |
|
|
Deniega el comando stop_accessing_security_scoped_resource sin ningún ámbito preconfigurado. |
|
|
Habilita el comando truncate sin ningún ámbito preconfigurado. |
|
|
Deniega el comando truncate sin ningún ámbito preconfigurado. |
|
|
Habilita el comando unwatch sin ningún ámbito preconfigurado. |
|
|
Deniega el comando unwatch sin ningún ámbito preconfigurado. |
|
|
Habilita el comando watch sin ningún ámbito preconfigurado. |
|
|
Deniega el comando watch sin ningún ámbito preconfigurado. |
|
|
Habilita el comando write sin ningún ámbito preconfigurado. |
|
|
Deniega el comando write sin ningún ámbito preconfigurado. |
|
|
Habilita el comando write_file sin ningún ámbito preconfigurado. |
|
|
Deniega el comando write_file sin ningún ámbito preconfigurado. |
|
|
Habilita el comando write_text_file sin ningún ámbito preconfigurado. |
|
|
Deniega el comando write_text_file sin ningún ámbito preconfigurado. |
|
|
Este permiso permite crear los directorios específicos de la aplicación. |
|
|
Esto deniega el acceso a archivos y carpetas peligrosos relevantes para Tauri por defecto. |
|
|
Esto deniega el acceso de lectura a la carpeta
|
|
|
Esto deniega el acceso de lectura a la carpeta
|
|
|
Esto habilita todos los comandos relacionados con lectura sin rutas accesibles preconfiguradas. |
|
|
Este permiso permite funcionalidad de lectura recursiva en los directorios base específicos de la aplicación. |
|
|
Esto habilita comandos relacionados con la lectura de directorios y metadatos de archivos sin rutas accesibles preconfiguradas. |
|
|
Esto habilita comandos relacionados con la lectura de archivos sin rutas accesibles preconfiguradas. |
|
|
Esto habilita todos los comandos relacionados con índice o metadatos sin rutas accesibles preconfiguradas. |
|
|
Un permiso vacío que puedes usar para modificar el ámbito global. Ejemplo
|
|
|
Esto habilita todos los comandos relacionados con escritura sin rutas accesibles preconfiguradas. |
|
|
Esto habilita todos los comandos relacionados con la escritura de archivos sin rutas accesibles preconfiguradas. |
Ámbitos
Sección titulada “Ámbitos”Los permisos de este plugin incluyen ámbitos para definir qué rutas están permitidas o explícitamente rechazadas. Para más información sobre ámbitos, consulta los Ámbitos de Comando.
Cada ámbito de allow o deny debe incluir una matriz que enumere todas las rutas que se deben permitir o denegar.
Las entradas del ámbito están en el formato { path: string }.
Las entradas del ámbito pueden usar variables $<path> para hacer referencia a rutas comunes del sistema como el directorio principal,
el directorio de recursos de la app y el directorio de configuración. La siguiente tabla enumera todas las rutas comunes a las que puedes hacer referencia:
| Ruta | Variable |
|---|---|
| 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 |
Ejemplos
Sección titulada “Ejemplos”- ámbito global
Para aplicar un ámbito a cualquier comando de fs, usa el permiso fs:scope:
{ "$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/**/*" }] } ]}Para aplicar un ámbito a un comando específico de fs,
usa la forma de objeto para permisos { "identifier": string, "allow"?: [], "deny"?: [] }:
{ "$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/*" }] } ]}En el ejemplo anterior puedes usar la API exists usando cualquier subruta de $APPDATA (no incluye subdirectorios)
y la API rename
© 2026 Colaboradores de Tauri. CC-BY / MIT