从assets / www目录访问文件

时间:2011-11-30 12:54:49

标签: android cordova

假设我的资产/ www目录(我的index.html旁边)有一个名为foo.html的文件(非常舒服)。

我想将该文件复制到设备上的其他位置。我的第一个方法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 =找不到文件?!)时出错了。

3 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:11)

您应该能够以这种方式访问​​文件:

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

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

希望这有帮助

答案 2 :(得分:1)

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