微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

angularjs – Cordova文件插件具有错误的目录

所以我正在angularjs 1中构建一个cordova / phonegap应用程序,我正在尝试保存并从应用程序的私人目录/沙箱中名为calendar.txt的文件中读取而不能.

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

我控制台记录了它试图使用的路径,这就是它:
文件:///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 File Plugin Tutorial

我究竟做错了什么?

我假设您在Android中遇到此问题,因为我也面临同样的问题.根据我的理解和谷歌搜索,在android(至少在android 5)你不能写在应用程序数据目录,除非手机是root.所以你可能不得不使用externalRootDirectory.

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

希望能帮助到你.

原文地址:https://www.jb51.cc/angularjs/143261.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐