2011-11-30 62 views
13

比方说,我的assets/www目录(位于index.html旁边)中有一个名为foo.html的文件(非常舒适)。访问资产/ www目录中的文件

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

知道它是否真的有可能通过Phonegap访问文件会很有趣。我不确定,因此希望看到代码片段,如果可能的话,如何获取资产目录中的文件的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 =文件没有找到?)

回答

10

您应该能够访问该文件是这样的:

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

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

希望这有助于

+1

它看起来很好,但它不工作:C始终调用失败方法。即使我尝试访问script.js文件,而不是我的虚拟html。另外我已经仔细检查了目录。错误事件只有1个字段,即代码:undefined。 – yoshi

+1

什么在你的logcat输出? – Leon

+0

记录错误事件只显示一个字段: 'code:undefined' – yoshi

1

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

14

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

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

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

+0

我目前没有代码,但我几乎已经实现了我需要接受的答案。无论如何,很高兴“见面”你西蒙,我已经阅读了很多帖子,你在phonegap组:) :) – yoshi

+0

@yoshi,对不起,但你是否能够使用莱昂的答案访问资产文件?甚至可以走向他们的道路?我试图让它工作,但我不能! – lao

+0

lucaskoala - 你能够得到它的工作?我没有任何运气(我认为西蒙是正确的,这是不可能的)。看到这里:http://stackoverflow.com/questions/22948430 –