Android - Не удается найти файл, хотя он существует в папке данных? - PullRequest
2 голосов
/ 15 ноября 2011

Я пытаюсь скопировать базу данных SQLite из папки данных на SDCard с помощью эмулятора, я использую приведенный ниже код, который я нашел здесь .

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

    if (sd.canWrite()) {
        String currentDBPath = "\\data\\PackageName\\databases\\myDB.db";
        String backupDBPath = "myDB.db";
        File currentDB = new File(data, currentDBPath);
        File backupDB = new File(sd, backupDBPath);

        if (currentDB.exists()) 
        {
           // code to copy from currentDB  to backupDB 
        }
    }
} catch (Exception e) {
}

Для разрешения на запись ниже также добавлено в файл манифеста:

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

Выпуск

Проблема в том, что currentDB.exists () возвращает FALSE .

«currentDB.getAbsolutePath ()» возвращает путь «data \ data \ PackageName \ database \ myDB.db»

Это правильное местоположение базы данных, потому что я могу найти ее с помощью Eclipse >> Перспектива DDMS >> Проводник

Может кто-нибудь помочь мне найти проблему, почему "currentDB.exists ()" возвращает FALSE?

Спасибо за ваше драгоценное время и помощь.

1 Ответ

0 голосов
/ 16 ноября 2011

Ну, ребята, я только что удалил расширение " .db ", и теперь оно работает!См. Обновленный код ниже:

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

    if (sd.canWrite()) {
        String currentDBPath = "\\data\\PackageName\\databases\\myDB";
        String backupDBPath = "myDB";
        File currentDB = new File(data, currentDBPath);
        File backupDB = new File(sd, backupDBPath);

        if (currentDB.exists()) 
        {
           // code to copy from currentDB  to backupDB 
        }
    }
} catch (Exception e) {
}

myDB.db заменен на " myDB ".

...