2014-02-28 54 views
3

我知道这个问题之前曾被问过很多次,但无论如何我无法弄清楚。 我可以写一个文本文件到一个目录上的SD卡(安卓4.0),但没有办法读回再次,使用此代码:使用纯Javascript在Android上使用mosync/phonegap读取SD卡上的文件

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); 
} 

我写了使用作家功能到文件目录SD卡/测试使用这个序列../ - 这是一个丑陋的代码,但工作!

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

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

任何帮助,高度赞赏 - 先谢谢您! 克里斯

回答

0

请参阅PHONEGAP DOCUMENT

从此你会得到工作例如,从SD卡获取的文件。 如果您在下载文件时遇到问题,请参考LINK

我认为在“/sdcard/backup.txt”文件中试图只使用“backup.txt”。

它似乎工作正常。

PhoneGap负责处理路径的细节,也可以处理目录。

+0

那么,这就是我约2周后尝试,你看到我的代码实际上是phonegap文件。如果我仅使用“backup.txt”作为路径,程序正在应用程序“文件”目录中查找此文件。我的问题仍然是,如何访问我自己选择的SDCARD上的任何目录中的文件? Phonegap不会照顾它,如果我不能将它写入代码,它如何知道我想使用哪个目录?请给出具体的例子来帮助。 – Chris

0

因此,我终于明白了: 要访问目录(在Android 4.0上,Samsung Note 8),我必须逐字从/data/data/com.app-name/files/apps/ (随机号码)/回到SD卡通过选择:

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

在mosync重新加载客户端。

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

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

希望能帮助别人!

Chris

+0

你好,克里斯,你可以发布代码吗?我尝试复制/粘贴你的第一个代码在我的apache cordova项目中,这是行不通的。我搜索了两个星期文件cordova函数的工作原理:/两个帖子在这里。 – JoDiii