【问题标题】:access files from assets/www directory从 assets/www 目录访问文件
【发布时间】:2011-11-30 12:54:49
【问题描述】:

假设我的 assets/www 目录(在我的 index.html 旁边)中有一个名为 foo.html 的文件(非常舒适)。

我想将该文件复制到设备上的另一个位置。我的第一种方法window.resolveLocalFileSystemURI("foo.html", cool(), notCool());不起作用。也不会像 www/ 这样的前缀。

想知道是否真的可以通过 Phonegap 访问文件会很有趣。我不相信,因此希望看到代码 sn-p 如何获取资产目录中文件的 FileEntry - 如果可能的话。

编辑: 好的,现在我们接到了这样的电话

window.resolveLocalFileSystemURI("file:///android_asset",
  function(entry){
    console.log(entry.fullPath);},
  function(evt){
    console.log(evt.code);}
);

code: undefined (Phonegap v1.2) 和code: 1 v1.0 出现错误(代码 1 = 文件未找到?!)

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    你不能做你想做的事。 assets 目录中的文件在技术上不在文件系统上,因此无法通过 File API 访问它们。这意味着调用 window.resolveLocalFileSystemURI() 不会返回 FileEntry。

    您能希望的最好结果就是通过 XHR 访问这些文件。如果它们是基于文本的,您始终可以获取 XHR 的结果并使用 FileWriter 将其写入文件系统。我写了一篇博文,展示了如何使用 XHR 从 assets 目录中获取文件。

    http://simonmacdonald.blogspot.com/2011/12/on-fourth-day-of-phonegapping-creating.html

    【讨论】:

    • 我现在没有代码,但我几乎已经完成了我需要用接受的答案做的事情。无论如何,很高兴“见到”你 Simon,我在 phonegap 组中阅读了很多你的帖子 :)
    • @yoshi,抱歉,您能否使用 Leon 的回答访问资产文件?或者甚至找到他们的路径?我试图让它工作,但我做不到!
    • lucaskoala - 你能让它工作吗?我没有运气(我认为西蒙是正确的,这是不可能的)。见这里:stackoverflow.com/questions/22948430
    【解决方案2】:

    您应该可以通过这种方式访问​​该文件:

    window.resolveLocalFileSystemURI("file:///android_asset/www/foo.html", onResolveSuccess, onFail);
    

    然后您可以使用File API - FileEntry.copyTo 或 FileEntry.moveTo 来实际执行操作。注意 - 您实际上无法写入asset/www 文件夹,只能写入SD 卡。

    希望对你有帮助

    【讨论】:

    • 它看起来很好,但它不起作用:C 总是调用失败方法。即使我尝试访问 script.js 文件而不是我的虚拟 html。我还仔细检查了目录。错误事件只有一个字段,即代码:未定义。
    • 你的 logcat 输出中有什么?
    • 记录错误事件只显示一个字段:code: undefined
    • 您使用的是最新的 PhoneGap 版本吗?我知道他们在上一个版本中更改了很多 File API...
    • 啊是的。这就解释了为什么我在一个新项目中收到错误代码 1。刚刚测试了它并且想知道它。因此,对于 v1.0,我得到错误代码 1(未找到?),而 1.2 版保持沉默(代码:未定义)。我将编辑我的问题并在其中添加更多代码。
    【解决方案3】:

    Leon - “你实际上不能写入asset/www文件夹,只能写入SD卡”第一部分是真的,你不能写入asset/www路径。但是,如果应用程序安装在设备上,您可以创建并写入文件,它会在 android 的根目录下创建。如果应用程序安装在 SD 卡上,则会在 SD 卡的根目录中创建该文件。因此创建的文件在清除应用程序的用户数据时不会被删除或更改,并且在删除应用程序时不会被删除。

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2015-03-09
      • 2013-12-11
      • 2014-01-10
      • 1970-01-01
      • 2019-06-25
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多