在 Phonegap 中保存文件
Saving files in Phonegap
在过去的几个小时里,我一直在 运行 浏览文档和所有内容,但没有成功...
我想从一些服务器下载一个文件并保存它到我的phone(应用程序存储文件的目录仅对我的应用程序可见,并在应用程序卸载时被删除)。我想 store 一个文件并 write 到它(我已经完成了下载部分)。使用以下代码,当我 运行 它时,它可以工作并显示 "file" 中的文本但是当我使用某些文件浏览器应用程序搜索文件时,我 "created" 几乎找不到。
干杯!
编辑说明:
好吧,我现在什至尝试使用 USB 连接在我的 phone 计算机上创建一个文件,所以我知道该文件存在的事实......
我在电脑上创建的文件路径是:
This PC\Galaxy S7 edge\Phone\Android\data\com.phonegap.musicapp2\text.txt
我从 JSON.stringify(dirEntry) 得到的响应代码如下
{"isFile":false,"isDirectory":true,"name":"com.phonegap.musicapp2","fillPath":"/data/user/0/com.phonegap.musicapp2/", "filesystem":"","nativeURL":"file:///data/user/0/com.phonegap.musiapp2/"}
所以当我运行下面的代码时,它给了我
Error from getFile: {"code":1}
我查看了文档,它说代码 1 的意思是:NOT_FOUND_ERR (http://prntscr.com/n071kx)
"Code from bellow"
function readFile(fileEntry) {
fileEntry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function() {
DebugConsole.log("Successful file read: " + this.result);
// displayFileData(fileEntry.fullPath + ": " + this.result);
};
reader.readAsText(file);
}, onErrorReadFile);
}
window.resolveLocalFileSystemURL(cordova.file.applicationStorageDirectory, function(dirEntry) {
DebugConsole.log(JSON.stringify(dirEntry));
dirEntry.getFile('text.txt', {create: false, exclusive: false}, function(fileEntry) {
//writeFile(fileEntry, null, isAppend);
readFile(fileEntry);
}, function(e) {
DebugConsole.log('Error from getFile: ' + JSON.stringify(e));
});
});
旁注:
应用程序从不请求访问我的内部存储空间的权限。
我进入 Apps/myapp/permissions,它显示该应用没有访问存储的权限。我打开它但仍然没有运气。
我想我需要以某种方式从应用程序请求存储访问权限,但我似乎找不到方法?
我设法找到了以下解决方案
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "Android/data/app.name/files/", success, fail);
在过去的几个小时里,我一直在 运行 浏览文档和所有内容,但没有成功... 我想从一些服务器下载一个文件并保存它到我的phone(应用程序存储文件的目录仅对我的应用程序可见,并在应用程序卸载时被删除)。我想 store 一个文件并 write 到它(我已经完成了下载部分)。使用以下代码,当我 运行 它时,它可以工作并显示 "file" 中的文本但是当我使用某些文件浏览器应用程序搜索文件时,我 "created" 几乎找不到。
干杯!
编辑说明: 好吧,我现在什至尝试使用 USB 连接在我的 phone 计算机上创建一个文件,所以我知道该文件存在的事实...... 我在电脑上创建的文件路径是:
This PC\Galaxy S7 edge\Phone\Android\data\com.phonegap.musicapp2\text.txt
我从 JSON.stringify(dirEntry) 得到的响应代码如下
{"isFile":false,"isDirectory":true,"name":"com.phonegap.musicapp2","fillPath":"/data/user/0/com.phonegap.musicapp2/", "filesystem":"","nativeURL":"file:///data/user/0/com.phonegap.musiapp2/"}
所以当我运行下面的代码时,它给了我
Error from getFile: {"code":1}
我查看了文档,它说代码 1 的意思是:NOT_FOUND_ERR (http://prntscr.com/n071kx)
"Code from bellow"
function readFile(fileEntry) {
fileEntry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function() {
DebugConsole.log("Successful file read: " + this.result);
// displayFileData(fileEntry.fullPath + ": " + this.result);
};
reader.readAsText(file);
}, onErrorReadFile);
}
window.resolveLocalFileSystemURL(cordova.file.applicationStorageDirectory, function(dirEntry) {
DebugConsole.log(JSON.stringify(dirEntry));
dirEntry.getFile('text.txt', {create: false, exclusive: false}, function(fileEntry) {
//writeFile(fileEntry, null, isAppend);
readFile(fileEntry);
}, function(e) {
DebugConsole.log('Error from getFile: ' + JSON.stringify(e));
});
});
旁注: 应用程序从不请求访问我的内部存储空间的权限。 我进入 Apps/myapp/permissions,它显示该应用没有访问存储的权限。我打开它但仍然没有运气。 我想我需要以某种方式从应用程序请求存储访问权限,但我似乎找不到方法?
我设法找到了以下解决方案
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "Android/data/app.name/files/", success, fail);