注意:
- AndroidStudio是没有资产文件夹的,要自己创建(New->Folder->Assets Folder),那么就可以见到资产目录了(如图)
在把文件放到此处即可.
通过资产管理者对象,去 打开文件,获取流即可
- 1.getAsserts();
- 2.管理对象.open(文件);
需求:
- 1.把一个数据库(name,money)文件从资产目录,复制到自己的数据库目录
- 2.读取数据库里的所有名字
过程:
- 数据库为:mycount.db,表名为count,内容如下
复制到数据库文件夹,就会显示
- 代码如下
- 数据库为:mycount.db,表名为count,内容如下
private void assertCase() {
//获取资产管理者
AssetManager manager = getAssets();
//管理者打开文件,得到流
try {
/*--------------读取并放入指定文件夹--------------*/
InputStream is = manager.open("mycount.db");
//放到数据库
File file = getFile();
FileOutputStream fos = new FileOutputStream(file);
byte[] bytes = new byte[1024*3];
int len = -1;
while ((len = is.read(bytes)) != -1) {
fos.write(bytes, 0, len);
}
/*--------------从文件夹读取内容--------------*/
//读取数据库
SQLiteDatabase db = openOrCreateDatabase("mycount.db", MODE_PRIVATE, null);
//获取游标
Cursor cursor = db.query("count", new String[]{"name"}, null, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(0);
System.out.println(name);
}
is.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private File getFile() {
File dir = new File("data/data/"+getPackageName()+"/databases");
//没有就创建
if (!dir.exists()) {
dir.mkdir();
}
File file = new File(dir,"mycount.db");
return file;
}
打印结果:
System.out: 小明
System.out: 小李