Как я копирую файл базы данных к SD-карте на Android?

Я хотел бы добавить опцию к своему приложению для Android, которое автоматически создает резервную копию базы данных SQLite к SD-карте.

Что лучший способ состоит в том, чтобы пойти об этом? Действительно ли какие-либо примеры или учебные руководства доступны?

58
задан Peter Mortensen 3 March 2016 в 22:04
поделиться

2 ответа

Базы данных SQLite являются полностью самодостаточными файлами и портативны - вы можете просто скопировать весь файл прямо на SD-карту.

Хотя сначала я бы проверил, установлена ли SD-карта в устройстве и каков ее путь (используя Environment.getExternalStorageDirectory()).

9
ответ дан 24 November 2019 в 18:42
поделиться

У меня работает этот код!

    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//{package name}//databases//{database name}";
            String backupDBPath = "{database name}";
            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) {
    }

Кто-нибудь знает, будет ли это работать на телефонах без рута? Я только пробовал на рутированном G1.

122
ответ дан 24 November 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: