Перемещение базы данных на Android - PullRequest
1 голос
/ 17 сентября 2011

Я отправляю свое приложение Android с базой данных SQLite (300 КБ), и после прочтения мне нужно переместить его, чтобы использовать.В iOS вы перемещаете базу данных из приложения в папку документов, потому что вы не можете писать в приложение, потому что оно подписано.Это тоже причина для Android?Итак, вернемся к моему вопросу.Следующий код не копирует базу данных правильно, он только копирует некоторые из них.Почему так?Неужели я что-то не так сделал здесьповторный отступ)

        InputStream inputStream = context.getAssets().open("klb.sqlite");
        OutputStream outputStream = new FileOutputStream(file);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }

        inputStream.close();
        outputStream.close();

1 Ответ

5 голосов
/ 17 сентября 2011
while (bis.read() != -1) {
    fos.write(bis.read());
}

Посмотрите на это внимательно. Ваш звонок read дважды, но write один раз. Вы фактически пропускаете каждый второй байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...