【问题标题】:Ionic 3 File plugin, can't write files on deviceIonic 3 File 插件,无法在设备上写入文件
【发布时间】:2018-06-27 13:14:06
【问题描述】:

我正在使用 ionic 3 和文件插件做一个应用程序,我正在尝试将一个 json 字符串写入我的资产文件夹下的一个 json 文件,该文件夹是这个层次结构: -assets -> mock -> msg-list.json ,将 assets 作为 ionic 文件中的文件夹。

使用文件插件时:

this.file.writeExistingFile("file://android_asset/www/assets/mock/","msg-list.json",JSON.stringify(data))
            .catch(
              error => {
                console.log(error);
              }
          );

我总是收到代码 1000 的错误,这是错误 url 的错误,我确实删除了文件后的“/”:(有 3 个)但仍然收到 1000 代码错误。

我该怎么办?

【问题讨论】:

    标签: android json angular ionic-framework ionic3


    【解决方案1】:

    应用程序文件夹 ( file://android_asset ) 是只读的,因此您不能在此文件夹中写入

    在此处阅读自述文件https://github.com/apache/cordova-plugin-file

    你可以使用applicationStorageDirecorythis.file.applicaTionStorageDirecory)即/data/data/:app-id:,你可以在那里写。

    所以你的解决方案是

    第一步。

    在应用程序启动时,将应用程序文件assets/mock 中的文件msg-list.json 复制到数据存储文件中(将其添加到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} (see source code her)。使用 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(...)
    

    最后。始终使用数据存储文件。

    注意: 使用:this.file.applicationDirectory 而不是直接使用file:///android_asset 并使用this.file.applicationStorageDirectory

    【讨论】:

    • 谢谢,它成功了。我不知道我怎么没有看到只读目录。
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 2018-03-02
    • 2019-12-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多