使用纯Javascript在Android上使用mosync/phonegap从SD卡读取文件

使用纯Javascript在Android上使用mosync/phonegap从SD卡读取文件,javascript,android,filereader,mosync,Javascript,Android,Filereader,Mosync,我知道这个问题以前被问过很多次,但我无论如何也弄不明白。 我能够将文本文件写入SD卡(android 4)上的目录,但无法再次读取,使用以下代码: function get_file () { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFilesystem, fail); } function getFilesystem(fs) { alert("getFilesystem -> backup.txt")

我知道这个问题以前被问过很多次,但我无论如何也弄不明白。 我能够将文本文件写入SD卡(android 4)上的目录,但无法再次读取,使用以下代码:

function get_file () {  
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFilesystem, fail);
}   
function getFilesystem(fs) {
alert("getFilesystem -> backup.txt");  // OK !
// alert("filesystem.name: "+fileSystem.name);  // = persistent
// alert("filesystem.root.name: "+fileSystem.root.name);  // = long number
    // 
fs.root.getFile("../../../../../../sdcard/test/backup.txt", {create: false, exclusive: false}, 
    function(fileEntry) {
      alert(fileEntry.fullPath); // shows that my path is appended to "data/.."
      fileEntry.file(function(file) {
      var reader = new FileReader();
      reader.onloadend = function(evt) {
        alert(+evt.target.result);  // NOT SHOWING !        
          };
        reader.readAsText(file);
    }, fail);
}, fail);
}
我使用writer函数将文件写入目录sdcard/test,使用的顺序是../-这是一个丑陋的代码,但仍在工作

但是
fs.root.getFile
的工作方式不同-它返回的完整路径信息显示给定的路径被附加到“/data/data/com.appname/files”中,但不会替换它

onloadend函数显然不起作用,因为我从未收到警报消息,也没有收到错误消息。 将路径更改为“file:///sdcard/test“SD卡/测试”也不起作用

非常感谢您的帮助-提前谢谢! 克里斯

请参考

从中您将获得从SD卡获取文件的工作示例。 如果您在下载文件时遇到问题,请参阅

我认为在替换“/sdcard/backup.txt”时,尽量只使用“backup.txt”

它似乎工作得很好


PhoneGap处理路径的细节,也处理目录

所以我终于可以弄明白了: 要访问该目录(在Android 4.0上,三星Note 8),我必须通过选择以下内容,从/data/data/com.app name/files/apps/(随机编号)/返回SD卡的所有目录:

 fs.root.getFile("../../../../../../sdcard/test/backup.txt", ...
在mosync中,重新加载客户端

使用mosync apk“编译”应用程序只需要4次“./”,因为那里的文件层次结构低于重新加载客户端中的文件层次结构。在任何情况下都必须签入文件资源管理器(需要根访问权限)。 与此不同的是,当您使用phonegap在云中编译时,实际上根路径是sdcard!就我所知,您无法转到数据目录

此路径适用于mosync中的写入和读取-我的错误是文本文件中有换行符“\n”。在这种情况下,我可以编写它,但读卡器停止时没有错误消息

希望这也能帮助其他人


Chris

嗯,这就是我从大约两周后一直在尝试的,你可以看到我的代码实际上是phonegap docu。如果我只使用“backup.txt”作为路径,程序将在应用程序“file”目录中查找此文件。我的问题仍然是,如何访问SD卡上我自己选择的任何目录中的文件?Phonegap不处理它,如果我不能将它写入代码,它怎么知道我要使用哪个目录?请给出具体的例子来帮助。你好,克里斯,你能发布代码吗?我试图在我的ApacheCordova项目中复制/粘贴您的第一个代码,但它不起作用。我搜索了两周文件cordova函数的工作原理:/此处有两篇帖子。