将android上的根文件夹中的文件复制到带有phonegap的sdcard

时间:2014-03-05 06:41:49

标签: android file sqlite cordova

我可以将sdcard(Android 4.2)上的文件复制到另一个文件夹 - 但由于某种原因我无法访问/data/data/com.applicationname/目录中的文件。 我的目标是将我的应用程序的sqlite数据库备份到SD卡以便以后检索。 我的代码:

 function save_db() {
   var dbfile = "file:///../app_database/file__0/0000000000000001.db"; // NOT working
   var dbfile_test = "file:///../../../../sdcard/test.db"; // WORKS !
   var destDir = "file:///../../../../sdcard/backup";
   var newfile = "backup.db";

    window.resolveLocalFileSystemURI(dbfile, function(file) {
       window.resolveLocalFileSystemURI(destDir, function(destination) {
            alert("copy file "+newfile);
            file.copyTo(destination,newfile);
       },fail1)
    },fail2);

该函数使用dbfile_test引用但不使用dbfile - 在这种情况下,我收到“fail2”错误消息1 - 未找到。但文件就在那里。 所以我假设它与访问根目录有关?应用程序是否必须拥有超级用户权限?如果是的话,怎么做?

请指教 - 谢谢!克里斯

1 个答案:

答案 0 :(得分:0)

在我正确阅读之前回答。这当然是无用的,因为它是基于Java的解决方案。

我使用这样的东西:

File dbFile = new File("/data/data/package.application/databases/databasename");
File destFile = new File("sdcard/backup/backup.db");
FileChannel src = new FileInputStream(dbFile).getChannel();
FileChannel dest = new FileOutputStream(destFile).getChannel();
if (dbFile.exists()) {
  dest.transferFrom(src, 0, src.size());
}
src.close();
dest.close();

也必须尝试使用​​catch块。