跳到主要内容
版本:v3

@capacitor/filesystem

Filesystem API 提供了一个类似 NodeJS 的 API,用于在设备上操作文件。

安装

npm install @capacitor/filesystem
npx cap sync

Android

如果使用 Directory.DocumentsDirectory.ExternalStorage,此 API 需要在 AndroidManifest.xml 中添加以下权限:

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

阅读 Android 指南 中的 设置权限 以获取有关设置 Android 权限的更多信息。

请注意,Directory.DocumentsDirectory.ExternalStorage 仅在 Android 9 或更早版本上可用。

理解目录和文件

iOS 和 Android 有额外的文件分隔层级,例如备份到云端的特殊目录或用于存储文档的目录。Filesystem API 提供了一种简单的方法,将每个操作限定到设备上的特定特殊目录。

此外,Filesystem API 支持使用完整的 file:// 路径,或在 Android 上读取 content:// 文件。只需省略 directory 参数即可使用完整的文件路径。

示例

import { Filesystem, Directory, Encoding } from '@capacitor/filesystem';

const writeSecretFile = async () => {
await Filesystem.writeFile({
path: 'secrets/text.txt',
data: "这是一段测试",
directory: Directory.Documents,
encoding: Encoding.UTF8,
});
};

const readSecretFile = async () => {
const contents = await Filesystem.readFile({
path: 'secrets/text.txt',
directory: Directory.Documents,
encoding: Encoding.UTF8,
});

console.log('secrets:', contents);
};

const deleteSecretFile = async () => {
await Filesystem.deleteFile({
path: 'secrets/text.txt',
directory: Directory.Documents,
});
};

const readFilePath = async () => {
// 这是使用完整文件路径读取文件的示例。使用此方法
// 从返回文件 URI 的插件中读取二进制数据(base64 编码),例如
// Camera。
const contents = await Filesystem.readFile({
path: 'file:///var/mobile/Containers/Data/Application/22A433FD-D82D-4989-8BE6-9FC49DEA20BB/Documents/text.txt'
});

console.log('data:', contents);
};

API

readFile(...)

readFile(options: ReadFileOptions) => Promise<ReadFileResult>

从磁盘读取文件。

参数类型
options
ReadFileOptions

返回:

Promise<ReadFileResult>

起始版本: 1.0.0


writeFile(...)

writeFile(options: WriteFileOptions) => Promise<WriteFileResult>

将文件写入设备的指定位置。

参数类型
options
WriteFileOptions

返回:

Promise<WriteFileResult>

起始版本: 1.0.0


appendFile(...)

appendFile(options: AppendFileOptions) => Promise<void>

在设备的指定位置向文件追加内容。

参数类型
options
AppendFileOptions

起始版本: 1.0.0


deleteFile(...)

deleteFile(options: DeleteFileOptions) => Promise<void>

从磁盘删除文件。

参数类型
options
DeleteFileOptions

起始版本: 1.0.0


mkdir(...)

mkdir(options: MkdirOptions) => Promise<void>

创建一个目录。

参数类型
options
MkdirOptions

起始版本: 1.0.0


rmdir(...)

rmdir(options: RmdirOptions) => Promise<void>

删除一个目录。

参数类型
options
RmdirOptions

起始版本: 1.0.0


readdir(...)

readdir(options: ReaddirOptions) => Promise<ReaddirResult>

返回目录中的文件列表(非递归)。

参数类型
options
ReaddirOptions

返回:

Promise<ReaddirResult>

起始版本: 1.0.0


getUri(...)

getUri(options: GetUriOptions) => Promise<GetUriResult>

返回路径和目录的完整文件 URI。

参数类型
options
GetUriOptions

返回:

Promise<GetUriResult>

起始版本: 1.0.0


stat(...)

stat(options: StatOptions) => Promise<StatResult>

返回文件的数据信息。

参数类型
options
StatOptions

返回:

Promise<StatResult>

起始版本: 1.0.0


rename(...)

rename(options: RenameOptions) => Promise<void>

重命名文件或目录。

参数类型
options
CopyOptions

起始版本: 1.0.0


copy(...)

copy(options: CopyOptions) => Promise<void>

复制文件或目录。

参数类型
options
CopyOptions

起始版本: 1.0.0


checkPermissions()

checkPermissions() => Promise<PermissionStatus>

检查读/写权限。 仅在 Android 上使用 Directory.DocumentsDirectory.ExternalStorage 时需要。

返回:

Promise<PermissionStatus>

起始版本: 1.0.0


requestPermissions()

requestPermissions() => Promise<PermissionStatus>

请求读/写权限。 仅在 Android 上使用 Directory.DocumentsDirectory.ExternalStorage 时需要。

返回:

Promise<PermissionStatus>

起始版本: 1.0.0


接口

ReadFileResult

属性类型描述起始版本
datastring文件中包含的数据的字符串表示。1.0.0

ReadFileOptions

属性类型描述起始版本
pathstring要读取的文件路径。1.0.0
directory
Directory
从中读取文件的 Directory1.0.0
encoding
Encoding
读取文件时使用的编码,如果未提供,数据将作为二进制读取并以 base64 编码返回。传递 Encoding.UTF8 以字符串形式读取数据。1.0.0

WriteFileResult

属性类型描述起始版本
uristring文件被写入位置的 URI。1.0.0

WriteFileOptions

属性类型描述默认值起始版本
pathstring要写入的文件路径。1.0.0
datastring要写入的数据。1.0.0
directory
Directory
存储文件的 Directory1.0.0
encoding
Encoding
写入文件时使用的编码。如果未提供,数据将作为 base64 编码写入。传递 Encoding.UTF8 以字符串形式写入数据。1.0.0
recursiveboolean是否创建任何缺失的父目录。false1.0.0

AppendFileOptions

属性类型描述起始版本
pathstring要追加内容的文件路径。1.0.0
datastring要写入的数据。1.0.0
directory
Directory
存储文件的 Directory1.0.0
encoding
Encoding
写入文件时使用的编码。如果未提供,数据将作为 base64 编码写入。传递 Encoding.UTF8 以字符串形式写入数据。1.0.0

DeleteFileOptions

属性类型描述起始版本
pathstring要删除的文件路径。1.0.0
directory
Directory
要从中删除文件的 Directory1.0.0

MkdirOptions

属性类型描述默认值起始版本
pathstring新目录的路径。1.0.0
directory
Directory
在其中创建新目录的 Directory1.0.0
recursiveboolean是否同时创建任何缺失的父目录。false1.0.0

RmdirOptions

属性类型描述默认值起始版本
pathstring要删除的目录路径。1.0.0
directory
Directory
要从中删除目录的 Directory1.0.0
recursiveboolean是否递归删除目录的内容。false1.0.0

ReaddirResult

属性类型描述起始版本
filesstring[]目录内的文件和目录列表。1.0.0

ReaddirOptions

属性类型描述起始版本
pathstring要读取的目录路径。1.0.0
directory
Directory
要从中列出文件的 Directory1.0.0

GetUriResult

属性类型描述起始版本
uristring文件的 URI。1.0.0

GetUriOptions

属性类型描述起始版本
pathstring要获取 URI 的文件路径。1.0.0
directory
Directory
文件所在 Directory1.0.0

StatResult

属性类型描述起始版本
typestring文件的类型。1.0.0
sizenumber文件的大小。1.0.0
ctimenumber创建时间(毫秒)。在 Android 7 及更早设备上不可用。1.0.0
mtimenumber最后修改时间(毫秒)。1.0.0
uristring文件的 URI。1.0.0

StatOptions

属性类型描述起始版本
pathstring要获取数据的文件路径。1.0.0
directory
Directory
文件所在 Directory1.0.0

CopyOptions

属性类型描述起始版本
fromstring现有的文件或目录。1.0.0
tostring目标文件或目录。1.0.0
directory
Directory
包含现有文件或目录的 Directory1.0.0
toDirectory
Directory
包含目标文件或目录的 Directory。如果未提供,将使用 'directory' 参数作为目标。1.0.0

PermissionStatus

属性类型
publicStorage
PermissionState

类型别名

RenameOptions

CopyOptions

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'

枚举

Directory

成员描述起始版本
Documents'DOCUMENTS'文档目录。在 iOS 上是应用的 documents 目录。使用此目录存储用户生成的内容。在 Android 上是 Public Documents 文件夹,因此其他应用可以访问。在 Android 10 上不可访问,除非应用通过在 AndroidManifest.xmlapplication 标签中添加 android:requestLegacyExternalStorage="true" 启用旧版外部存储。在 Android 11 或更新版本上不可访问。1.0.0
Data'DATA'数据目录。在 iOS 上将使用 Documents 目录。在 Android 上是存放应用文件的目录。卸载应用时文件将被删除。1.0.0
Library'LIBRARY'库目录。在 iOS 上将使用 Library 目录。在 Android 上是存放应用文件的目录。卸载应用时文件将被删除。1.1.0
Cache'CACHE'缓存目录。在内存不足时可能被删除,因此使用此目录编写应用可以轻松重新创建的应用特定文件。1.0.0
External'EXTERNAL'外部目录。在 iOS 上将使用 Documents 目录。在 Android 上是主要的共享/外部存储设备上的目录,应用可以在其中放置其拥有的持久文件。这些文件是应用内部的,通常对用户不可见。卸载应用时文件将被删除。1.0.0
ExternalStorage'EXTERNAL_STORAGE'外部存储目录。在 iOS 上将使用 Documents 目录。在 Android 上是主要的共享/外部存储目录。在 Android 10 上不可访问,除非应用通过在 AndroidManifest.xmlapplication 标签中添加 android:requestLegacyExternalStorage="true" 启用旧版外部存储。在 Android 11 或更新版本上不可访问。1.0.0

Encoding

成员描述起始版本
UTF8'utf8'八位 UCS 转换格式。1.0.0
ASCII'ascii'七位 ASCII,也称为 ISO646-US,即 Unicode 字符集的基本拉丁块。此编码仅在 Android 上支持。1.0.0
UTF16'utf16'十六位 UCS 转换格式,字节顺序由可选的字节顺序标记标识。此编码仅在 Android 上支持。1.0.0