@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>