【问题标题】:Copy file in root folder on android to sdcard with phonegap使用phonegap将android上根文件夹中的文件复制到sdcard
【发布时间】:2014-03-05 06:41:49
【问题描述】:

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

 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 - 未找到。但是文件在那里。 所以我认为它与对根目录的访问有关?应用程序是否必须具有超级用户权限?如果是,该怎么做?

请指教-谢谢!克里斯

【问题讨论】:

    标签: android file sqlite cordova


    【解决方案1】:

    在我正确阅读之前回答。这当然是无用的,因为它是基于 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();
    

    try catch 块也必须使用。

    【讨论】:

    • 无论如何谢谢你 - 不幸的是,我还没有弄清楚如何从 javascript 中调用 java 函数,如果可能的话;-)
    猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2013-11-22
    相关资源
    最近更新 更多