不要硬编码“/ data /”;请改用Context.getFilesDir()。getPath()

时间:2014-03-06 20:14:25

标签: android sqlite android-assets

我需要将我的数据库从Assets文件夹复制到“/data/data/com.example.provadatabase/databases /”

我正在使用此代码

private static String DB_PATH = "/data/data/com.example.provadatabase/databases/";

private static String DB_NAME = "MN1";

然后创建一个数据库(如果不存在)则应该从资产

将数据库复制到创建的数据库中
InputStream myInput = myContext.getAssets().open(DB_NAME);

String outFileName = DB_PATH + DB_NAME;

OutputStream myOutput = new FileOutputStream(outFileName);

byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}

myOutput.flush();
myOutput.close();
myInput.close();

}

数据库已经很好地创建了,但它不会将我的数据库复制到数据库文件夹,代码会发出此警告“不要硬编码”/ data /“;请使用Context.getFilesDir()。getPath()代替”

我应该用什么来复制我的数据库?

1 个答案:

答案 0 :(得分:1)

错误告诉你的确切。

String outFileName = context.getDatabasePath(DatabaseHelper.DB_NAME).getParentFile() + DB_NAME;

这假定上下文可用,它通常在构造函数中。但老实说,我只会使用SQLiteAssetHelper