加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:50:00 所属栏目:安全 来源:网络整理
导读:所以我正在angularjs 1中构建一个cordova / phonegap应用程序,我正在尝试保存并从应用程序的私人目录/沙箱中名为calendar.txt的文件中读取而不能. 调试时我的控制台日志显示没有错误,如果文件不存在,则正在创建文件,并且正在正确读取.然而事实并非如此.当我
所以我正在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);

希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读