跳到主要内容
版本:v4

@capacitor/filesystem

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

安装​

npm install @capacitor/filesystem
npx cap sync

iOS​

要使文件显示在"文件"应用中,您必须在 Info.plist 中将以下键设置为 YES:

  • UIFileSharingEnabled(应用程序支持 iTunes 文件共享)
  • LSSupportsOpeningDocumentsInPlace(支持就地打开文档)

阅读有关配置 iOS 的帮助。

Android​

如果使用 Directory.Documents 或 Directory.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.Documents 和 Directory.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('秘密文件:', contents);
};

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

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

console.log('数据:', 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<CopyResult>

复制文件或目录。

参数类型
options
CopyOptions

返回:

Promise<CopyResult>

自从: 1.0.0


checkPermissions()​

checkPermissions() => Promise<PermissionStatus>

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

返回:

Promise<PermissionStatus>

自从: 1.0.0


requestPermissions()​

requestPermissions() => Promise<PermissionStatus>

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

返回:

Promise<PermissionStatus>

自从: 1.0.0


接口​

ReadFileResult​

属性类型描述自从
datastring文件中所含数据的字符串表示。1.0.0

ReadFileOptions​

属性类型描述自从
pathstring要读取的文件的路径。1.0.0
directory
Directory
要读取文件的 Directory。1.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
存储文件的 Directory。1.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
存储文件的 Directory。1.0.0
encoding
Encoding
写入文件时使用的编码。如果未提供,数据将以 base64 编码写入。传递 Encoding.UTF8 以字符串形式写入数据。1.0.0

DeleteFileOptions​

属性类型描述自从
pathstring要删除的文件的路径。1.0.0
directory
Directory
要删除文件的 Directory。1.0.0

MkdirOptions​

属性类型描述默认值自从
pathstring新目录的路径。1.0.0
directory
Directory
创建新目录的 Directory。1.0.0
recursiveboolean是否同时创建任何缺失的父目录。false1.0.0

RmdirOptions​

属性类型描述默认值自从
pathstring要移除的目录的路径。1.0.0
directory
Directory
要移除目录的 Directory。1.0.0
recursiveboolean是否递归移除目录的内容。false1.0.0

ReaddirResult​

属性类型描述自从
filesFileInfo[]目录内的文件和目录列表。1.0.0

FileInfo​

属性类型描述自从
namestring文件或目录的名称。
type'directory' | 'file'文件的类型。4.0.0
sizenumber文件的大小,以字节为单位。4.0.0
ctimenumber创建时间,以毫秒为单位。在 Android 7 及更早设备上不可用。4.0.0
mtimenumber最后修改时间,以毫秒为单位。4.0.0
uristring文件的 URI。4.0.0

ReaddirOptions​

属性类型描述自从
pathstring要读取的目录的路径。1.0.0
directory
Directory
要列出文件的 Directory。1.0.0

GetUriResult​

属性类型描述自从
uristring文件的 URI。1.0.0

GetUriOptions​

属性类型描述自从
pathstring要获取 URI 的文件的路径。1.0.0
directory
Directory
获取文件所在的 Directory。1.0.0

StatResult​

属性类型描述自从
type'directory' | 'file'文件的类型。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
获取文件所在的 Directory。1.0.0

CopyOptions​

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

CopyResult​

属性类型描述自从
uristring文件复制到的位置的 URI。4.0.0

PermissionStatus​

属性类型
publicStorage
PermissionState

类型别名​

RenameOptions​

CopyOptions

PermissionState​

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

枚举​

Directory​

成员值描述自从
Documents'DOCUMENTS'Documents 目录。在 iOS 上是应用的 documents 目录。使用此目录存储用户生成的内容。在 Android 上是公共 Documents 文件夹,因此其他应用可以访问。在 Android 10 上无法访问,除非应用通过在 AndroidManifest.xml 的 application 标签中添加 android:requestLegacyExternalStorage="true" 启用旧版外部存储。在 Android 11 或更高版本上无法访问。1.0.0
Data'DATA'Data 目录。在 iOS 上将使用 Documents 目录。在 Android 上是保存应用文件的目录。卸载应用时文件将被删除。1.0.0
Library'LIBRARY'Library 目录。在 iOS 上将使用 Library 目录。在 Android 上是保存应用文件的目录。卸载应用时文件将被删除。1.1.0
Cache'CACHE'Cache 目录。在内存不足时可能被删除,因此使用此目录写入应用特定的、可以轻松重新创建的文件。1.0.0
External'EXTERNAL'External 目录。在 iOS 上将使用 Documents 目录。在 Android 上是主共享/外部存储设备上的目录,应用可以在其中放置其拥有的持久文件。这些文件对应用来说是内部的,通常不对用户显示为媒体。卸载应用时文件将被删除。1.0.0
ExternalStorage'EXTERNAL_STORAGE'External storage 目录。在 iOS 上将使用 Documents 目录。在 Android 上是主共享/外部存储目录。在 Android 10 上无法访问,除非应用通过在 AndroidManifest.xml 的 application 标签中添加 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