Полагаю, многие уже читали эту статью:
Использование собственной базы данных SQLite в приложениях Android: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/comment-page-2/#comment-12368
Тем не менее, IOException продолжает увеличиваться до
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
Я пытаюсь использовать большой файл БД. Это больше, чем> 8 МБ Я построил его с использованием sqlite3 в Mac OS X, вставил строки в кодировке UTF-8 (я использую корейский), добавил таблицу android_meta с ko_KR в качестве локали, как указано выше.
Однако, когда я отлаживаю, IOException продолжает показывать значение
length=myInput.read(buffer)
Я подозреваю, что это вызвано попыткой чтения большого файла.Если нет, я понятия не имею, почему.Я тестировал тот же код, используя гораздо меньший текстовый файл, и он работал нормально.
Может кто-нибудь помочь мне в этом?Я искал много мест, но ни одно место не дало мне четкого ответа или хорошего решения.Хороший смысл эффективен или прост.
Я попытаюсь использовать BufferedInput (Output) Stream , но если более простой не может работать, я не думаю, что это тоже будет работать.
Может кто-нибудь объяснить основные ограничения в области ввода / вывода файлов в Android и, возможно, правильный путь? Я буду очень признателен за чей-либо внимательный ответ.Спасибо.
с более подробной информацией:
private void copyDataBase() throws IOException{
//Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}