0

この方法でデータベース(sqllite)をsdカードにコピーしています:

String currentDBPath =
                "\\data\\com.powergroupbd.tripmileage\\databases\\tripmileagedatabase";
                 String backupDBPath = "tripmileagedatabase";
                File currentDB = new File(data, currentDBpath);
                File backupDB = new File(sd, BackupDbPath);

                if (currentDB.exists()) {
                    FileChannel src = new FileInputStream(currentDB)
                            .getChannel();
                    FileChannel dst = new FileOutputStream(backupDB)
                            .getChannel();
                    dst.transferFrom(src, 0, src.size());
                    src.close();
                    dst.close();

これはエミュレーターでは正常に機能していますが、実際のデバイスにインストールすると、SD カードにファイルが表示されません。私は何が欠けていますか?

4

1 に答える 1

1

データベースへのパスは/data/data/から始まります。パス区切り文字がバックスラッシュではなくスラッシュであることに注意してください。したがって、コードを次のように変更します。

String currentDBPath =
            "/data/data/com.powergroupbd.tripmileage/databases/tripmileagedatabase";
             String backupDBPath = "tripmileagedatabase";
            File currentDB = new File(data, currentDBpath);
            File backupDB = new File(sd, BackupDbPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB)
                        .getChannel();
                FileChannel dst = new FileOutputStream(backupDB)
                        .getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
于 2012-07-15T20:57:52.463 に答える