如何读取android asserts下面已经存在的sqlite数据库
展开全部
这个可以在每次应用开启时检测database文件夹下是否有这个名称的数据库,如果没有就从asserts中获得释放一次,给你看一下我的代码:
我的asserts里有一个文件叫做:address.db
/**
*在onCreate()方法中调用
*/
private File initDatabase (){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
File file = getDatabasePath("address.db");
byte [] buffer = new byte[1024];
int c;
try {
if (!file.exists())
file.getParentFile().mkdirs();
else
return file;
bis = new BufferedInputStream(getAssets().open("address.db"));
bos = new BufferedOutputStream(new FileOutputStream(file));
while ((c = bis.read(buffer)) != -1)
bos.write(buffer, 0, c);
} catch (IOException e) {
e.printStackTrace();
return null;
}finally{
try {
if (bis != null)
bis.close();
if (bos != null) {
bos.close();
bos.flush();
}
}catch (IOException e){
e.printStackTrace();
}
}
return file;
}
2018-08-02 · 知道合伙人软件行家
关注
展开全部
assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
assets的读取方式:
1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
4.调用AssetManager.close() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作。
assets的读取方式:
1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
4.调用AssetManager.close() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-12-15
展开全部
必须要在代码中建一个数据库,才可以访问,不然你直接放进去的数据库是访问不了的。
建好了数据库之后,你可以从手机中导出到电脑,再作修改后导入到手机,这样手机就可以访问了。希望能帮到你,
建好了数据库之后,你可以从手机中导出到电脑,再作修改后导入到手机,这样手机就可以访问了。希望能帮到你,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询