从资产打开数据库...总是 FileNotFoundException
Open Database from Assets...always FileNotFoundException
我已经创建了一个 SQLite 数据库。它起来 运行...
现在,我想制作一个备份副本(如果可能的话,在同一个文件夹中)但是 4 小时后我不能。
我阅读了很多关于这个问题的帖子...这是我在 DBHelper 中的代码:
public void copyDataBase(String itinerario, Context c) throws IOException {
InputStream mInputStream = c.getAssets().open(Constants.DB_NAME);
String outFileName = DB_PATH+Constants.DB_NAME+itinerario;
OutputStream mOutputStream = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = mInputStream.read(buffer)) > 0) {
mOutputStream.write(buffer, 0, length);
}
mOutputStream.flush();
mOutputStream.close();
mInputStream.close();
}
- Constants.Name是对的(MYDB)
- 如果我浏览 /data/data//databases/ 我可以找到数据库
-我尝试了显式路径和其他在互联网上建立的解决方案,但没有成功!
它总是 return 一个 FileNotFoundException。
我正在使用片段,所以我将上下文从片段传递给此方法
可能是我犯了一个蹩脚的错误,但是4个小时后我没有发现错误...代码很清楚
有人可以帮助我吗?
提前致谢
亚历克斯
您可以使用 Context#getDatabasePath(String)
。 https://developer.android.com/reference/android/content/Context.html#getDatabasePath(java.lang.String)
我已经创建了一个 SQLite 数据库。它起来 运行... 现在,我想制作一个备份副本(如果可能的话,在同一个文件夹中)但是 4 小时后我不能。 我阅读了很多关于这个问题的帖子...这是我在 DBHelper 中的代码:
public void copyDataBase(String itinerario, Context c) throws IOException {
InputStream mInputStream = c.getAssets().open(Constants.DB_NAME);
String outFileName = DB_PATH+Constants.DB_NAME+itinerario;
OutputStream mOutputStream = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = mInputStream.read(buffer)) > 0) {
mOutputStream.write(buffer, 0, length);
}
mOutputStream.flush();
mOutputStream.close();
mInputStream.close();
}
- Constants.Name是对的(MYDB)
- 如果我浏览 /data/data//databases/ 我可以找到数据库 -我尝试了显式路径和其他在互联网上建立的解决方案,但没有成功!
它总是 return 一个 FileNotFoundException。
我正在使用片段,所以我将上下文从片段传递给此方法
可能是我犯了一个蹩脚的错误,但是4个小时后我没有发现错误...代码很清楚
有人可以帮助我吗? 提前致谢 亚历克斯
您可以使用 Context#getDatabasePath(String)
。 https://developer.android.com/reference/android/content/Context.html#getDatabasePath(java.lang.String)