我正在使用ionic 3和文件插件做一个应用程序,我正在尝试将json字符串写入我的assets文件夹下的json文件,该文件夹的层次结构如下: -assets - >模拟 - > msg-list.json,资产作为离子文件中的文件夹。
使用文件插件时:
this.file.writeExistingFile("file://android_asset/www/assets/mock/","msg-list.json",JSON.stringify(data))
.catch(
error => {
console.log(error);
}
);
我总是得到代码1000的错误,这是坏网址,我确实删除了" /"文件后:(已有3)仍然有1000代码错误。
我该怎么办?
答案 0 :(得分:5)
应用程序文件夹(file:// android_asset)是只读的,因此您无法在此文件夹中写入
请阅读自述文件https://github.com/apache/cordova-plugin-file
您可以使用applicationStorageDirecory
(this.file.applicaTionStorageDirecory)
/ data / data /:app-id:,您可以在那里写。
所以你的解决方案就是
第一步。
将文件msg-list.json
从应用程序的文件assets/mock
复制到数据存储文件,启动应用程序时(在app.component.ts中添加此文件并在平台上准备好)
this.file.copyFile(this.file.applicationDirectory + '/www/assets/mock', 'msg-list.json', this.file.applicationStorageDirectory, 'msg-list.json').then(...)
第二步。
您现在可以在应用程序的各个位置读取和写入数据存储中的文件。
要编写该文件,我建议使用writeFile
函数(不是writeExistingFile
),因为writeExistingFile
函数只是writeFile
,其选项为:{replace: true}
({{3 })。使用writeFile函数,您可以设置所需的选项。
export interface IWriteOptions {
replace?: boolean;
append?: boolean;
truncate?: number; // if present, number of bytes to truncate file to before writing
}
所以为了编辑数据存储中的文件,我使用如下:
this.file.writeFile(this.file.applicationStorageDirectory,"msg-list.json",JSON.stringify(data), {append: true}).then(...).catch(...)
最后。总是使用数据存储文件。
NB:
使用:this.file.applicationDirectory
而不是直接使用file:///android_asset
并使用this.file.applicationStorageDirectory