【问题标题】:Read files from SD Card with mosync/phonegap on Android with pure Javascript使用纯 Javascript 在 Android 上使用 mosync/phonegap 从 SD 卡读取文件
【发布时间】:2014-02-28 04:44:28
【问题描述】:

我知道这个问题以前被问过很多次,但我还是想不通。 我可以将文本文件写入 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);
}

我使用 writer 函数将文件写入目录 sdcard/test 并使用 ../ 序列 - 这是一个丑陋的代码,但可以工作!

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

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

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

【问题讨论】:

    标签: javascript android filereader mosync


    【解决方案1】:

    请参考PHONEGAP DOCUMENT

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

    我认为代替“/sdcard/backup.txt”尝试仅使用“backup.txt”。

    它似乎工作正常。

    PhoneGap 负责路径的细节,也适用于目录。

    【讨论】:

    • 嗯,这就是我从大约 2 周以来一直在尝试的,您会看到我的代码实际上是 phonegap 文档。如果我只使用“backup.txt”作为路径,程序会在应用程序“文件”目录中寻找这个文件。我的问题仍然是,如何访问我自己选择的 SDCARD 上任何目录中的文件? Phonegap 不处理它,如果我不能将它写入代码,它怎么知道我要使用哪个目录?请举个具体的例子来帮助。
    【解决方案2】:

    所以我终于可以弄清楚了: 要访问该目录(在 Android 4.0,Samsung Note 8 上),我必须通过选择将 /data/data/com.app-name/files/apps/(random no.)/ 中的所有目录返回到 sdcard:

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

    在 mosync 中重新加载客户端。

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

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

    希望这对其他人也有帮助!

    克里斯

    【讨论】:

    • 你好克里斯,你能发布代码吗?我尝试在我的 apache cordova 项目中复制/粘贴您的第一个代码,但它不起作用。我搜索了两个星期文件cordova函数的工作原理:/这里有两个帖子。
    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多