所以我正在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 举报,一经查实,本站将立刻删除。