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

时间:2014-02-28 04:44:28

标签: javascript android filereader mosync

我知道这个问题之前曾被多次询问过,但我无论如何都无法理解。 我能够将文本文件写入sdcard(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);
}

我使用编写器函数将文件编写到目录sdcard / test中,使用这个序列../ - 这是一个丑陋的代码,但正在工作!

但是fs.root.getFile不能以相同的方式工作 - 它返回的fullPath信息显示我给出的路径是APPENDED到“/data/data/com.appname/files”但不替换它!

onloadend函数显然不起作用,因为我从未收到过警告消息,也没有收到错误消息。 更改“file:/// sdcard / test”或“sdcard / test”的路径也没有效果。

非常感谢任何帮助 - 提前谢谢! 克里斯

2 个答案:

答案 0 :(得分:0)

请参阅PHONEGAP DOCUMENT

从这里你将得到从sdcard获取文件的工作示例。 如果您在下载文件时遇到问题,请参阅LINK

我想在“/sdcard/backup.txt”的位置尝试只使用“backup.txt”。

似乎工作正常。

PhoneGap负责路径的详细信息,也适用于目录。

答案 1 :(得分:0)

所以我终于明白了: 要访问该目录(在Android 4.0,Samsung Note 8上),我必须从/data/data/com.app-name/files/apps/(random no。)/通过选择返回到SD卡的所有目录:

 fs.root.getFile("../../../../../../sdcard/test/backup.txt", ...

在mosync Reload客户端。

使用mosync apk编译应用程序只需要4次“../”,因为文件层次结构低于重新加载客户端。无论如何都要检查文件资源管理器(需要root访问权限)。 与此不同的是,当您使用phonegap在云中编译时 - 那么根路径确实是SD卡!然后,就我所知,你无法进入数据目录。

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

希望这也有助于其他人!

克里斯