Есть ли способ перенести файл базы данных SQLite из приложения на ПК изнутри приложения?

У меня есть приложение, которое хранит информацию в таблице, чтобы в конечном итоге передать ее на ПК. Однако я не могу найти достоверной информации о том, как передать файл db с телефона на ПК.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
39
1

Ответы 1

просто добавьте это разрешение в манифест:

<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" />

и сделайте резервную копию своей базы данных следующим образом:

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

        if (sd.canWrite()) 
        {
            String currentDBPath = "\\data\\your.package.name\\databases\\dabase_name"; /* REMEMBER TO CHANGE THIS */
            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();
            }
            if (bool == true)
            {
                Toast.makeText(Settings.this, "Backup Complete", Toast.LENGTH_SHORT).show();
                bool = false;
            }
        }               
    } 
    catch (Exception e) {
        Log.w("Settings Backup", e);
    }
}

теперь вы можете вручную перенести его (из хранилища) на компьютер или загрузить на сервер

Но что произойдет, если нет SD-карты для записи?

ThisismynameIguess 09.10.2018 21:22

это просто имя, и вместо этого используется внутреннее хранилище

Kapta 10.10.2018 06:59

Другие вопросы по теме