データベースファイルが存在する場合、どのようにそれをSDカードにコピーできますか? これが私のコードです:
public boolean checkdatabase() {
boolean checkdb = false;
try {
File databaseFile = myContext.getDatabasePath("database.db");
checkdb = databaseFile.exists();
} catch(SQLiteException e) {
System.out.println("Database doesn't exist");
}
return checkdb;
}
public void opendatabase() {
boolean dbexist = checkdatabase();
if (dbexist) {
myDatabase = SQLiteDatabase.openDatabase("data/data/***/databases/database.db", null, SQLiteDatabase.OPEN_READWRITE);
} else {
createdatabase();
System.out.println("Database doesn't exist");
myDatabase = SQLiteDatabase.openDatabase("data/data/***/databases/database.db", null, SQLiteDatabase.OPEN_READWRITE);
}
}
private copydatabase() throws IOException {
String DB_PATH = "data/data/***/databases/";
File f = new File(DB_PATH);
if (!f.exists()) {
f.mkdir();
}
String DATABASE_NAME = "database.db";
InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
String outFileName = DB_PATH + DATABASE_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
このコードはデータベースを内部メモリにコピーします。外部メモリ(sdcard)が存在するかどうかを確認したいのですが、そうであれば、データベースファイルをそこにコピーして、アプリのどこからでもアクセスできます。