Kak*_*ime 1 android json ionic-framework ionic3 angular
我正在使用离子3和文件插件做一个应用程序,我试图写一个json字符串到我的资产文件夹下的json文件,这个层次结构:-assets - > mock - > msg-list.json,资产为来自离子文件的文件夹.
使用文件插件时:
this.file.writeExistingFile("file://android_asset/www/assets/mock/","msg-list.json",JSON.stringify(data))
.catch(
error => {
console.log(error);
}
);
Run Code Online (Sandbox Code Playgroud)
我总是得到代码1000的错误,这是坏网址的一个,我确实删除文件后的"/":(已经有3)仍然得到1000代码错误.
我该怎么办 ?
应用程序文件夹(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(...)
Run Code Online (Sandbox Code Playgroud)
第二步.
您现在可以在应用程序的任何位置读取和写入数据存储中的文件.为了写我建议使用文件writeFile 功能(不writeExistingFile),因为该writeExistingFile功能只是writeFile与该选项:{replace: true}(见源码她).使用writeFile函数,您可以设置所需的选项.
export interface IWriteOptions {
replace?: boolean;
append?: boolean;
truncate?: number; // if present, number of bytes to truncate file to before writing
}
Run Code Online (Sandbox Code Playgroud)
所以为了编辑数据存储中的文件,我会使用如下:
this.file.writeFile(this.file.applicationStorageDirectory,"msg-list.json",JSON.stringify(data), {append: true}).then(...).catch(...)
Run Code Online (Sandbox Code Playgroud)
最后.总是使用数据存储文件.
注意:使用:this.file.applicationDirectory而不是直接file:///android_asset使用和使用this.file.applicationStorageDirectory
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |