public void exportDatabse(String databaseName) {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
String backupDBPath ="//database.sql";
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();
Log.i(TAG,"coping database sucessfull");
}
}
} catch (Exception e) {
Log.i(TAG,"exception! "+ e.getMessage());
}
}
Während des Debuggen den sd
Speicherort der Datei File sd = Environment.getExternalStorageDirectory();
istEnvironment.getExternalStorageDirectory gibt falschen Wert
/storage/emulierten/0
Die kopierte Datei ist nicht sichtbar in meiner SD-Karte. Außerdem weiß ich, dass der Speicherort der sd
Datei falsch ist. Wie kann ich die Datei database.sql bekommen? UPDATE
[Externer Speicher] (https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html) nicht [Wechseldatenträger] (https: // commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html). Sie haben viele doppelte '/' Werte, die behoben werden sollten. Und Ihre Kopie wird für die meisten Apps (und Desktop-Betriebssysteme) nicht sichtbar sein, es sei denn, Sie erhalten diese Kopie durch den 'MediaStore' indiziert (https://stackoverflow.com/questions/32789157/how-towrite-files) -zu-extern-öffentlich-Speicher-in-android-so-dass-sie-sind-sichtbar. – CommonsWare