如何读取android asserts下面已经存在的sqlite数据库
3个回答
2015-12-18 · 知道合伙人软件行家
关注
展开全部
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-31 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517204
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
if (!new File("/data/data/" + this.getPackageName()
+ "/database.sqlite").exists()) {
try {
FileOutputStream out = new FileOutputStream("data/data/"
+ this.getPackageName() + "/database.sqlite");
InputStream in = getAssets().open("phrase.db");
byte[] buffer = new byte[1024];
int readBytes = 0;
while ((readBytes = in.read(buffer)) != -1)
out.write(buffer, 0, readBytes);
in.close();
out.close();
} catch (IOException e) {
}
}
sqliteDB = SQLiteDatabase.openOrCreateDatabase(
"/data/data/" + this.getPackageName() + "/database.sqlite",
null);
System.out.println("sqliteDB");
try{
Cursor result =sqliteDB.rawQuery("SELECT id as _id from shopping",null);
result.moveToFirst();
int cnt=0;
while(!result.isAfterLast()&&cnt++<10){
String id = result.getString(1);
System.out.println("\t "+id + "]\t");
result.moveToNext();
}
result.close();
}catch(Exception e){
e.printStackTrace();
}
+ "/database.sqlite").exists()) {
try {
FileOutputStream out = new FileOutputStream("data/data/"
+ this.getPackageName() + "/database.sqlite");
InputStream in = getAssets().open("phrase.db");
byte[] buffer = new byte[1024];
int readBytes = 0;
while ((readBytes = in.read(buffer)) != -1)
out.write(buffer, 0, readBytes);
in.close();
out.close();
} catch (IOException e) {
}
}
sqliteDB = SQLiteDatabase.openOrCreateDatabase(
"/data/data/" + this.getPackageName() + "/database.sqlite",
null);
System.out.println("sqliteDB");
try{
Cursor result =sqliteDB.rawQuery("SELECT id as _id from shopping",null);
result.moveToFirst();
int cnt=0;
while(!result.isAfterLast()&&cnt++<10){
String id = result.getString(1);
System.out.println("\t "+id + "]\t");
result.moveToNext();
}
result.close();
}catch(Exception e){
e.printStackTrace();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-12-18
展开全部
必须要在代码中建一个数据库,才可以访问,不然你直接放进去的数据库是访问不了的。 建好了数据库之后,你可以从手机中导出到电脑,再作修改后导入到手机,这样手机就可以访问了。希望能帮到你,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询