当前位置: 首页 > 面试题库 >

Cordova文件插件目录错误

鲜于德业
2023-03-14
问题内容

因此,我正在用angularjs 1构建一个cordova /
phonegap应用程序,并且试图在该应用程序的专用目录/沙箱中保存和读取一个名为calendar.txt的文件,但不能。

调试时我的控制台日志显示没有错误,如果文件不存在则正在创建文件,并且文件正在正确读取。但是事实并非如此。在设备上构建并运行时,不会保存数据。在指定的位置也没有创建文件。

我在控制台上记录了它试图使用的路径,就是它:file:///data/data/com.adobe.phonegap.app/files/calendar.txt

这是我用来打开文件的代码:

$rootScope.openFile = function(){
        var pathToFile = cordova.file.dataDirectory + "calendar.txt";
        console.log('path = ' + pathToFile);
        window.resolveLocalFileSystemURL(pathToFile, 
            function(fileEntry){
            fileEntry.file(function (file) {
                var reader = new FileReader();

                reader.onloadend = function (e) {
                    $rootScope.calendar = JSON.parse(this.result);
                    console.log('file opened');
                    console.log(JSON.parse(this.result));
                };

                reader.readAsText(file);
            }, function(error){});
        }, function(error){
            if(error.code == FileError.NOT_FOUND_ERR){
                $rootScope.calendar = new Year();
                console.log('no file found so it was created');
                $rootScope.saveFile();
            }
            else{
                console.log(error);
            }
        });
    };

这是我保存文件的代码:

$rootScope.saveFile = function(){
        var data = JSON.stringify($rootScope.calendar, null, '\t');
        var fileName = "calendar.txt"
        window.resolveLocalFileSystemURL(cordova.file.dataDirectory, 
            function(directoryEntry){
                directoryEntry.getFile(fileName, { create: true }, 
                    function (fileEntry) {
                        fileEntry.createWriter(
                            function (fileWriter) {
                                var blob = new Blob([data], { type: 'text/plain' });
                                fileWriter.write(blob);
                                console.log('file saved');
                            }, 
                            function (error){});
                    },
                    function (error){}
                );
            }, 
            function(error){
                console.log("Saving Error: Error during finding directory", error.message);
            }
        );
    };

我使用了本教程,以了解更多信息:Cordova文件插件教程

我究竟做错了什么?


问题答案:

我认为您在Android中也遇到了这个问题,因为我也面临同样的问题。根据我的理解和谷歌搜索,在android中(至少在android
5中),除非手机已扎根,否则您无法在应用程序数据目录中写入内容。因此,您可能不得不改用externalRootDirectory。

例如:
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,successCallback,errorCallback);

希望能帮助到你。



 类似资料:
  • 为android插件依赖项“cordova插件”安装“cordova插件文件传输”时生成APK时出错-file@4.3.3“已获取,使用该版本。android上已安装依赖插件“cordova插件文件”。安装android的“cordova插件文件路径”安装android插件依赖的“cordova插件地理位置”cordova插件-compat@1.2.0“已获取,使用该版本。为android插件安装

  • 我有麻烦-使用ionic创建一个android构建。它最初运行良好。我尝试将android目标平台更改为19-这是4.4.2 kitkat。 这是错误消息-显然cordova文件插件有问题。当我将平台sdk目标更改为19时。 任何帮助将不胜感激。 /myapp/platforms/android/src/org/apache/cordova/file/LocalFilesystem.java:41

  • C:\My App\test 科尔多瓦插件添加科尔多瓦-插件-地理Geofence-保存npm警告可选跳过可选依赖:fsevents@1.2.4(node_modules\fsecents): npm警告不支持跳过可选依赖:fsevents@1.2.4不支持的平台:想要{"os":"darwin","arch":"any"}(当前:{"os":"win32","arch":"x64"}) mini

  • 一般的, 插件应该放置在APPLICATION_PATH下的plugins目录, 这样在自动加载的时候, 加载器通过类名, 发现这是个插件类, 就会在这个目录下查找. 当然, 插件也可以放在任何你想防止的地方, 只要你能把这个类加载进来就可以参见 Yaf_Plugin_Abstract 使用Bootstrap

  • 问题内容: 不知何故,我的应用程序中安装了许多cordova插件,因此,它需要访问几乎所有内容-从我的联系人到当前位置(即使此应用程序不需要此功能)。 这个应用程序是通过jenkins构建的,据我了解,一种解决方案是用单个命令删除每个插件,因此它将像: 但是有时它会显示一些错误,而对于詹金斯来说,任何错误都会导致构建失败,因此是否有任何命令可以删除所有插件?(在安装过程中,需要任何应用程序才能正常

  • 每当我将添加到解决方案中时,在构建过程中就会出现一个错误:app:transformClassesWithStackFramesFixerforDebug。在下面添加了整个输出。Project是一个空的Cordova插件,除了安装的插件什么都没有。感谢援助。下面添加了Stacktrace。我用的是最新的科尔多瓦版本。 目前,我尝试的是: null