我可以将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 - 未找到。但文件就在那里。 所以我假设它与访问根目录有关?应用程序是否必须拥有超级用户权限?如果是的话,怎么做?
请指教 - 谢谢!克里斯
答案 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块。