假设我的资产/ 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 =找不到文件?!)时出错了。
答案 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卡的根目录下创建。在清除应用程序的用户数据时,不会删除或更改因此创建的文件,并且在删除应用程序时不会删除这些文件。