Прошлой ночью у меня был этот код , работающий дома, и Whatzit был хорошей помощью.Я все заработал (прокомментировал проверку существования dbFile и просто скопировал все изменения в базу данных, которые я хотел сделать с помощью браузера sqlite).
Этим утром я принес свой планшет на компьютер с Windows 7, удалил приложение и попытался запустить тот же код из затмения.Я получаю сообщение об ошибке:
03-12 11: 51: 39.320: E / AndroidRuntime (20365): причина: java.io.IOException: попытка скопировать базу данных - ОШИБКА: / data/data/mypackage/databases/restaurant.db: открыть не удалось: ENOTDIR (не каталог)
Я заархивировал свой проект на моем Mac и разархивировал его в тот же каталог проекта в eclipse наWindows-машина и затмение просто выполнили обновление.
Хотите узнать, что я могу попробовать?Я попытался удалить приложение, скопировать .apk обратно и установить его снова, но ничего не работает.спасибо.
* Я действительно запускаю это на реальном устройстве - Motorola Xoom 4.0.3
private void copyDataBase(File dbFile) throws IOException {
try{
InputStream dbStream = myDbContext.getAssets().open(dbName);
Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canRead());
Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canWrite());
Log.e("In copyDataBase", "Environment Directory: " + Environment.getExternalStorageDirectory());
Log.e("In copyDataBase", "opened up file " + dbName + " successfully. - trying " + path.toString());
OutputStream newDbFile = new FileOutputStream(DB_PATH + dbName);
byte[] buffer = new byte[1024];
int length;
while((length = dbStream.read(buffer)) > 0){
newDbFile.write(buffer);
}
newDbFile.flush();
newDbFile.close();
dbStream.close();
}
catch(IOException e){
throw new IOException("trying to copy the database - ERROR: " + e.getMessage());
}
}
результаты canWrite и canRead возвращаются как ложные.Как бы я ни печатал здесь, это работало безупречно.Я не знаю, почему подключение планшета к машине под управлением Windows, работающей с той же версией, что и eclipse, имело бы какое-то значение.