проблема при копировании данных из активов в приложение - PullRequest
0 голосов
/ 07 июля 2011

Для моего приложения мне нужно прочитать данные из моей собственной базы данных. Я помещаю свою базу данных в папку «ASSETS» и использую следующий код для копирования в путь

DB_PATH = "/data/data/com.android.example/databases/"

Но таблица не создается. И ее исключение и принудительное закрытие.

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();

}

В приведенном выше коде "буфер" не получает данные. так что это не запись данных в myOutput. Я нашел этот код в сети и изменил. Может ли какой-либо орган помочь мне прочитать файл в папке активов на SD-карте. Мне нужно хранить данные на SD-карте из внешнего файла и читать с него.

Ответы [ 2 ]

1 голос
/ 13 апреля 2012

Проверьте размер файла базы данных, существует ограничение в 1,2 Мб для файлов в папке «assets».Одним из способов решения этой проблемы является использование команды Unix «split», добавление файлов split в папку res / raw, а затем склейка их обратно в базу данных путем незначительного изменения кода.Прочитайте этот блог (http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/) для получения дополнительной информации.

0 голосов
/ 07 июля 2011

Вы должны поместить данные не в папку ASSETS, а в assets - пожалуйста, проверьте еще раз!

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