Я создал базу данных и отредактировал ее.Я хочу использовать эту базу данных в моем приложении для Android.(API 24) Итак, я копирую базу данных из ресурсов в данные приложения
File f = getDatabasePath("sozluk.db");
if (!f.exists()) {
if (!f.getParentFile().exists()) {
f.getParentFile().mkdir();
}
}
try {
InputStream is = getAssets().open("sozluk_k.db");
OutputStream os = new FileOutputStream(f);
byte[] buffer = new byte[1024];
int b;
while ((b = is.read(buffer)) > 0) {
os.write(buffer, 0, b);
}
os.flush();
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
Файл успешно скопирован, так как я могу открыть его через другие приложения, но этот код выдает ошибку SQLiteDatabase db = SQLiteDatabase.openDatabase("sozluk.db",null,MODE_PRIVATE);
2018-12-07 22:07:31.297 24549-24549/com.yaksit.ebced W/SQLiteLog: (28) failed to open "//sozluk.db" with flag (131074) and mode_t (0) due to error (2)
2018-12-07 22:07:31.298 24549-24549/com.yaksit.ebced W/SQLiteLog: (28) failed to open "//sozluk.db" with flag (131072) and mode_t (0) due to error (2)
2018-12-07 22:07:31.298 24549-24549/com.yaksit.ebced E/SQLiteLog: (14) cannot open file at line 32887 of [69906880ce]
2018-12-07 22:07:31.298 24549-24549/com.yaksit.ebced E/SQLiteLog: (14) os_unix.c:32887: (2) open(//sozluk.db) -
2018-12-07 22:07:31.298 24549-24549/com.yaksit.ebced E/SQLiteLog: (1) Process om.yaksit.ebced : Pid (24549) Uid (10416) Euid (10416) Gid (10416) Egid (10416)
2018-12-07 22:07:31.298 24549-24549/com.yaksit.ebced E/SQLiteLog: (1) osStat failed "//sozluk.db" due to error (2)
2018-12-07 22:07:31.298 24549-24549/com.yaksit.ebced E/SQLiteLog: (1) Stat of / : st_mode(41777) st_uid(0) st_gid(0) st_ino(2)
2018-12-07 22:07:31.306 24549-24549/com.yaksit.ebced E/SQLiteDatabase: Failed to open database 'sozluk.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1294): Could not open database
#################################################################
Error Code : 1294 (SQLITE_CANTOPEN_ENOENT)
Caused By : Specified directory or database file does not exist.
(unknown error (code 1294): Could not open database)
#################################################################
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:242)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:203)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:518)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:209)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:181)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1156)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1101)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:832)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:807)
at com.yaksit.ebced.MainActivity.oku(MainActivity.java:38)
at com.yaksit.ebced.MainActivity.access$100(MainActivity.java:26)
at com.yaksit.ebced.MainActivity$1.onClick(MainActivity.java:130)
at android.view.View.performClick(View.java:6261)
at android.widget.TextView.performClick(TextView.java:11185)
at android.view.View$PerformClick.run(View.java:23752)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
Я проверил, существует ли он по f.getAbsolutePath()
, что вернуло /data/user/0/com.yaksit.ebced/databases/sozluk.db
, так что файл поврежден?