私は、外部記憶装置への内部からファイルをコピーするためのコードのこの部分を使用しているために働いていない:Androidのコピーファイルは、任意の失うことなく、ローカルのSQLiteファイル
public static void copyFile(String currentDBPath, String backupDBPath) {
try {
File sd = Environment.getExternalStorageDirectory();
//File data = Environment.getDataDirectory();
if (sd.canWrite()) {
File currentDB = new File(currentDBPath);
File backupDB = new File(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();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
私は内部ストレージまたはTXTから画像をコピーしようファイルは正常に動作していますが、エラーは発生せず、新しいファイルはsdカードにあります。しかし、/data/data/package/databases/system.sqlite
から自分のローカルデータベースファイルをコピーしようとすると、指定された宛先に新しいファイルが作成されますが、新しいデータベースファイルは空であり、テーブルやデータはありません。
なぜデータベースファイルでしか起こっていないのでしょうか?
編集:
いいえ、私は気づいているように、コピーされた新しいデータベースファイルが元1(145キロバイト)と同じ大きさですが、私はsqliteのブラウザでそれを開いたときに表がありませんデータはありません。
データベースがまだ開いているうちにコピーを試みていますか? – Kuffs
私はそれがSDカードにコピーしようとしている間に閉じていることを確かめています。 –
これを除いて、ファイルcurrentDB = getContext()。getDatabasePath(CurrentDBName);あなたのコードは私のものと同一であり、私の問題は問題ありません。 – Kuffs