#android
#Android
Вопрос:
Я хочу сохранить файл моей базы данных в папке drawable, а затем создать его резервную копию на SD-карте. Пытаясь это сделать, я нахожу проблему в том, какой путь указать для папки с возможностью рисования. Я делаю это:
попробуйте {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
//db = openOrCreateDatabase("demodatabase.sqlite",SQLiteDatabase.CREATE_IF_NECESSARY,null);
currentDBPath = "//drawable//demodatabase.sqlite";
db=openOrCreateDatabase(uri.toString(), 0, null);
System.out.println("=====" currentDBPath);
backupDBPath = "{demodatabase.sqlite}";
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();
}
} }catch (Exception e) {}
Заранее благодарю.
Ответ №1:
вы бы поместили такие файлы не в папку drawable, а в папку assets, и вы можете получить входной поток для этих файлов, просто используя
context.getAssets().open("demodatabase.sqlite")
Комментарии:
1. я получаю исключение с нулевым указателем, контекст не принимает значения… почему так?]
2. Используете ли вы класс SQLiteOpenHelper в качестве суперкласса?
3. тогда вы можете просто использовать getAssets().open(«demodatabase.sqlite»), потому что само действие является контекстом
4. db=openOrCreateDatabase(uri.toString(), 0, null); как выглядит ваш uri? это должно быть просто имя базы данных, а не путь
5. просто то, что я сделал, это скопировал файлы из папки drawable на SD-карту