@capacitor/filesystem
Filesystem API 提供了类似 NodeJS 的 API,用于在设备上处理文件。
安装
npm install @capacitor/filesystem
npx cap sync
iOS
若要让文件出现在“文件”应用中,必须在 Info.plist 中将以下键设置为 YES:
UIFileSharingEnabled(Application supports iTunes file sharing)LSSupportsOpeningDocumentsInPlace(Supports opening documents in place)
如需帮助,请阅读 配置 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: "This is a test",
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 编码)。
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 | |
返回值:
Promise<ReadFileResult>
自: 1.0.0
writeFile(...)
writeFile(options: WriteFileOptions) => Promise<WriteFileResult>
将文件写入设备的指定位置。
| 参数 | 类型 |
|---|---|
options | |
返回值:
Promise<WriteFileResult>
自: 1.0.0
appendFile(...)
appendFile(options: AppendFileOptions) => Promise<void>
在设备的指定位置追加文件内容。
| 参数 | 类型 |
|---|---|
options | |
自: 1.0.0
deleteFile(...)
deleteFile(options: DeleteFileOptions) => Promise<void>
从磁盘删除文件。
| 参数 | 类型 |
|---|---|
options | |
自: 1.0.0
mkdir(...)
mkdir(options: MkdirOptions) => Promise<void>
创建目录。
| 参数 | 类型 |
|---|---|
options | |
自: 1.0.0
rmdir(...)
rmdir(options: RmdirOptions) => Promise<void>
删除目录。
| 参数 | 类型 |
|---|---|
options | |
自: 1.0.0
readdir(...)
readdir(options: ReaddirOptions) => Promise<ReaddirResult>
返回目录中的文件列表(非递归)。
| 参数 | 类型 |
|---|---|
options | |
返回值:
Promise<ReaddirResult>
自: 1.0.0
getUri(...)
getUri(options: GetUriOptions) => Promise<GetUriResult>
返回路径和目录的完整文件 URI。
| 参数 | 类型 |
|---|---|
options | |
返回值:
Promise<GetUriResult>
自: 1.0.0
--------------------### stat(...)
stat(options: StatOptions) => Promise<StatResult>
获取文件信息
| 参数 | 类型 |
|---|---|
options | |
返回:
Promise<StatResult>
自: 1.0.0
rename(...)
rename(options: RenameOptions) => Promise<void>
重命名文件或目录
| 参数 | 类型 |
|---|---|
options | |
自: 1.0.0
copy(...)
copy(options: CopyOptions) => Promise<CopyResult>
复制文件或目录
| 参数 | 类型 |
|---|---|
options | |
返回:
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
| 属性 | 类型 | 描述 | 自 |
|---|---|---|---|
data | string | 文件中包含的数据的字符串表示形式 | 1.0.0 |
ReadFileOptions
| 属性 | 类型 | 描述 | 自 |
|---|---|---|---|
path | string | 要读取的文件路径 | 1.0.0 |
directory | | 要从中读取文件的 Directory | 1.0.0 |
encoding | | 读取文件时使用的编码。如果未提供,数据将作为二进制读取并返回 base64 编码。传递 Encoding.UTF8 可以将数据作为字符串读取 | 1.0.0 |
WriteFileResult
| 属性 | 类型 | 描述 | 自 |
|---|---|---|---|
uri | string | 文件被写入到的 URI | 1.0.0 |
WriteFileOptions
| 属性 | 类型 | 描述 | 默认值 | 自 |
|---|---|---|---|---|
path | string | 要写入的文件路径 | 1.0.0 | |
data | string | 要写入的数据 | 1.0.0 | |
directory | |