Filesystem
文件系统 API 提供了类似 NodeJS 的接口,用于在设备上处理文件。
readFile(...)
writeFile(...)
appendFile(...)
deleteFile(...)
mkdir(...)
rmdir(...)
readdir(...)
getUri(...)
stat(...)
rename(...)
copy(...)
- 接口
- 枚举
理解目录与文件
iOS 和 Android 在文件管理上具有额外的分层机制,例如有专门用于云备份的特殊目录,或用于存储文档的目录。文件系统 API 提供了一种简单的方式,将每个操作限定在设备的特定特殊目录中。
此外,文件系统 API 支持使用完整的 file://
路径,或在 Android 上读取 content://
文件。只需省略 directory
参数即可使用完整文件路径。
示例
import { Plugins, FilesystemDirectory, FilesystemEncoding } from '@capacitor/core';
const { Filesystem } = Plugins;
async fileWrite() {
try {
const result = await Filesystem.writeFile({
path: 'secrets/text.txt',
data: "这是一个测试",
directory: FilesystemDirectory.Documents,
encoding: FilesystemEncoding.UTF8
})
console.log('文件已写入', result);
} catch(e) {
console.error('无法写入文件', e);
}
}
async fileRead() {
let contents = await Filesystem.readFile({
path: 'secrets/text.txt',
directory: FilesystemDirectory.Documents,
encoding: FilesystemEncoding.UTF8
});
console.log(contents);
}
async fileAppend() {
await Filesystem.appendFile({
path: 'secrets/text.txt',
data: "更多测试",
directory: FilesystemDirectory.Documents,
encoding: FilesystemEncoding.UTF8
});
}
async fileDelete() {
await Filesystem.deleteFile({
path: 'secrets/text.txt',
directory: FilesystemDirectory.Documents
});
}
async mkdir() {
try {
let ret = await Filesystem.mkdir({
path: 'secrets',
directory: FilesystemDirectory.Documents,
recursive: false // 类似 mkdir -p
});
} catch(e) {
console.error('无法创建目录', e);
}
}
async rmdir() {
try {
let ret = await Filesystem.rmdir({
path: 'secrets',
directory: FilesystemDirectory.Documents,
recursive: false,
});
} catch(e) {
console.error('无法删除目录', e);
}
}
async readdir() {
try {
let ret = await Filesystem.readdir({
path: 'secrets',
directory: FilesystemDirectory.Documents
});
} catch(e) {
console.error('无法读取目录', e);
}
}
async stat() {
try {
let ret = await Filesystem.stat({
path: 'secrets/text.txt',
directory: FilesystemDirectory.Documents
});
} catch(e) {
console.error('无法获取文件信息', e);
}
}
async readFilePath() {
// 这是一个读取完整文件路径的示例。使用此方法从返回文件 URI 的插件(如相机)读取二进制数据(base64 编码)
try {
let data = await Filesystem.readFile({
path: 'file:///var/mobile/Containers/Data/Application/22A433FD-D82D-4989-8BE6-9FC49DEA20BB/Documents/text.txt'
})
}
}
async rename() {
try {
// 此示例在同一“目录”内移动文件
let ret = await Filesystem.rename({
from: 'text.txt',
to: 'text2.txt',
directory: FilesystemDirectory.Documents
});
} catch(e) {
console.error('无法重命名文件', e);
}
}
async copy() {
try {
// 此示例在文档目录内复制文件
let ret = await Filesystem.copy({
from: 'text.txt',
to: 'text2.txt',
directory: FilesystemDirectory.Documents
});
} catch(e) {
console.error('无法复制文件', e);
}
}
API
readFile(...)
readFile(options: FileReadOptions) => Promise<FileReadResult>
从磁盘读取文件
参数 | 类型 | 说明 |
---|---|---|
options |
| 文件读取的配置选项 |
返回值:
Promise<FileReadResult>
writeFile(...)
writeFile(options: FileWriteOptions) => Promise<FileWriteResult>
将文件写入设备的指定位置
参数 | 类型 | 说明 |
---|---|---|
options |
| 文件写入的 配置选项 |
返回值:
Promise<FileWriteResult>
appendFile(...)
appendFile(options: FileAppendOptions) => Promise<FileAppendResult>
在设备的指定位置追加文件内容
参数 | 类型 | 说明 |
---|---|---|
options |
| 文件追加的配置选项 |
返回值:
Promise<FileAppendResult>
deleteFile(...)
deleteFile(options: FileDeleteOptions) => Promise<FileDeleteResult>
从磁盘删除文件
参数 | 类型 | 说明 |
---|---|---|
options |
| 文件删除的配置选项 |
返回值:
Promise<FileDeleteResult>
mkdir(...)
mkdir(options: MkdirOptions) => Promise<MkdirResult>
创建目录
参数 | 类型 | 说明 |
---|---|---|
options |
| 创建目录的选项 |
返回值:
Promise<MkdirResult>
rmdir(...)
rmdir(options: RmdirOptions) => Promise<RmdirResult>
删除目录
参数 | 类型 | 说明 |
---|---|---|
options |
| 目录删除的配置选项 |
返回值:
Promise<RmdirResult>
readdir(...)
readdir(options: ReaddirOptions) => Promise<ReaddirResult>
返回目录中的文件列表(非递归)
参数 | 类型 | 说明 |
---|---|---|
options |
| 读取目录操作的配置选项 |
返回值:
Promise<ReaddirResult>
getUri(...)
getUri(options: GetUriOptions) => Promise<GetUriResult>
返回路径和目录的完整文件 URI
参数 | 类型 | 说明 |
---|---|---|
options |
| 获取 URI 操作的配置选项 |
返回值:
Promise<GetUriResult>
stat(...)
stat(options: StatOptions) => Promise<StatResult>
返回文件的相关数据
参数 | 类型 | 说明 |
---|---|---|
options |
| 文件状态操作的配置选项 |
返回值:
Promise<StatResult>
rename(...)
rename(options: RenameOptions) => Promise<RenameResult>
重命名文件或目录
参数 | 类型 | 说明 |
---|---|---|
options |
| 重命名操作的配置选项 |
返回值:
Promise<RenameResult>
copy(...)
copy(options: CopyOptions) => Promise<CopyResult>
复制文件或目录
参数 | 类型 | 说明 |
---|---|---|
options |
| 复制操作的配置选项 |
返回值:
Promise<CopyResult>
Interfaces
FileReadResult
属性 | 类型 |
---|---|
data | string |
FileReadOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要读取的文件名 |
directory |
| 从中读取文件的 FilesystemDirectory |
encoding |
| 读取文件的编码方式。如果不提供,数据将作为二进制读取并返回 base64 编码的数据。传递 FilesystemEncoding.UTF8 可将数据作为字符串读取 |
FileWriteResult
属性 | 类型 |
---|---|
uri | string |
FileWriteOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要写入的文件名 |
data | string | 要写入的数据 |
directory |
| 存储文件的 FilesystemDirectory |
encoding |
| 写入文件的编码方式。如果不提供,数据将作为 base64 编码写入。传递 FilesystemEncoding.UTF8 可将数据作为字符串写入 |
recursive | boolean | 是否创建所有缺失的父目录。默认为 false |
FileAppendResult
FileAppendOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要追加的文件名 |
data | string | 要追加的数据 |
directory |
| 存储文件的 FilesystemDirectory |
encoding |
| 写入文件的编码方式。如果不提供,数据将作为 base64 编码写入。传递 FilesystemEncoding.UTF8 可将数据作为字符串写入 |
FileDeleteResult
FileDeleteOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要删除的文件名 |
directory |
| 从中删除文件的 FilesystemDirectory |
MkdirResult
MkdirOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 新目录的路径 |
directory |
| 创建新目录的 FilesystemDirectory |
recursive | boolean | 是否同时创建所有缺失的父目录。默认为 false |
RmdirResult
RmdirOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要删除的目录路径 |
directory |
| 从中删除目录的 FilesystemDirectory |
recursive | boolean | 是否递归删除目录内容。默认为 false |
ReaddirResult
属性 | 类型 |
---|---|
files | string[] |
ReaddirOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要读取的目录路径 |
directory |
| 列出文件的 FilesystemDirectory |
GetUriResult
属性 | 类型 |
---|---|
uri | string |
GetUriOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要获取 URI 的文件路径 |
directory |
| 文件所在的 FilesystemDirectory |
StatResult
属性 | 类型 |
---|---|
type | string |
size | number |
ctime | number |
mtime | number |
uri | string |
StatOptions
属性 | 类型 | 说明 |
---|---|---|
path | string | 要获取数据的文件路径 |
directory |
| 文件所在的 FilesystemDirectory |