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());
}
}
При отладке в sd
местоположение файла File sd = Environment.getExternalStorageDirectory();
являетсяEnvironment.getExternalStorageDirectory возвращает неправильное значение
/хранение/эмулировать/0
скопированный файл не виден в моей SD-карте. Кроме того, я знаю, что неправильное расположение файла sd
. Как я могу получить файл database.sql? UPDATE
[Внешнее запоминающее устройство] (https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html) не [съемный носитель] (https: // commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html). У вас много дублированных значений '/', которые должны быть исправлены. И ваша копия не будет видна большинству приложений (и настольных операционных систем), если [вы не получите эту копию, индексированную «MediaStore»] (https://stackoverflow.com/questions/32789157/how-to-write-files -в-внешнего Государственно-хранения-в-андроида-так, что-они-являются-visibl). – CommonsWare