Как скопировать файл из папки активов в папку ... / базы данных в Android - PullRequest
3 голосов
/ 18 апреля 2011

Я использую следующий код для копирования файла sqlite из папки ресурсов в папку базы данных.я нашел этот пример здесь найти ответ CommonsWare на этот вопрос
Но я получаю java.io.FileNotFoundException: /file:/android_asset/pg558.sqlite (Нет такого файла или каталога)

void copy() throws IOException {

    InputStream in =getApplicationContext().getAssets().open("pg558.sqlite");
    OutputStream out = new FileOutputStream("data/data/com.mireader/databases/MIBOOK");

    // Transfer bytes from in to out
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}

Ответы [ 2 ]

2 голосов
/ 16 ноября 2012

Пожалуйста, проверьте ваш файл pg558.sqlite, я пробовал ваш код, и он работал для моего файла.Я скопировал XML-файл из assets / в /mnt/sdcard/.

0 голосов
/ 15 июля 2018

Чтобы скопировать файл из папки активов в папку / database:

public static final String DATABASE_NAME = "data.db";


private void copyDatabaseFromAssets() {
    try {

        byte[] buffer = new byte[1024];
        OutputStream myOutput;
        int length;
        InputStream myInput;

        String DB_PATH = this.getDatabasePath(AppSettings.DATABASE_NAME).getAbsolutePath();

        AssetManager assetManager = getAssets();
        myInput = assetManager.open("databases/" + AppSettings.DATABASE_NAME);

        myOutput = new FileOutputStream(DB_PATH);
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
        myOutput.close();
        myOutput.flush();
        myInput.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...