admin 管理员组文章数量: 887021
AndroidStudio
- 从AndroidStudio assets目录复制文件到sd卡目录:(后两个参数表示sd卡路径及文件名称)
{
boolean result = false;
try {
if (!(new File(filepath +"/"+ fileName)).exists()) { //sd卡文件不存在
File f = new File(filepath);
if (!f.exists()) {
f.mkdir();
}
try {
InputStream is = context.getAssets().open(fileName); //assets资源文件
OutputStream os = new FileOutputStream(filepath +"/"+ fileName);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
}
} else {
result = true;
}
} catch (Exception e) {
Log.d("fcj",e.toString());
}
return result;
}
- 处理sd卡SQL文件,需要通过继承SQLiteOpenHelper类,重写其构造方法。因为Android通过SQLiteOpenHelper创建数据库时,默认是将文件保存在'/data/data/应用程序名/databases'目录下,默认的SQLiteOpenHelper的构造方法调用了Context的openOrCreateDatabase方法,所以我们也需要继承Context类,重写openOrCreateDatabase方法,指定sd卡数据库路径。
- 继承SQLiteOpenHelper :
public class SQLiteHelper extends SQLiteOpenHelper { public static String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath()+"/1SQL";
public static String DB_NAME = "Identity.sqlite";
public SQLiteHelper(Context context) { super(new SQLiteContext(context, getDirPath ()), DB_NAME, null, 1); } private static String getDirPath(){ if(checkDataBase()) { return DATABASE_PATH; } return null; } public static boolean checkDataBase() { //查询该数据库文件是否存在 SQLiteDatabase checkDB = null; try { String myPath = DATABASE_PATH +"/"+ DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); } catch (SQLiteException e) { } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); }
@Override public void onCreate(SQLiteDatabase db) {
}
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
} }
- 继承ContextWrapper:
public class SQLiteContext extends ContextWrapper
{
private String mDirPath; //sd卡文件路径,不包括文件名称
public SQLiteContext(Context base,String dirPath){
super(base);
this.mDirPath=dirPath;
}
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {
return super.openOrCreateDatabase( getDatabasePath (name).getAbsolutePath(), mode, factory, errorHandler);
}
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) {
return super.openOrCreateDatabase( getDatabasePath (name).getAbsolutePath(),mode, factory);
}
@Override
public File getDatabasePath (String name) { //name:文件名称
File result = new File( mDirPath +File.separator +name);
if (!result.getParentFile().exists()){
result.getParentFile().mkdirs();
}
return result;
}
}
- 查询数据,将数据转成图片:
SQLiteHelper helper = new SQLiteHelper(this); SQLiteDatabase db = helper.getReadableDatabase(); String[] columns = {"id", "photo", "name", "gender", "place"}; //你要的数据 String[] selectionArgs = {"VBN97XnLE"}; //选择的目标值 //查询identify表中,id=VBN97XnLE的数据 Cursor cursor = db.query("identity", columns, "id=?", selectionArgs, null, null, null); while (cursor.moveToNext()) { int nameColumnIndex = cursor.getColumnIndex("photo"); //数据“photo”所在的列数 byte[] strValue = cursor.getBlob(nameColumnIndex); Bitmap bitmap = BitmapFactory.decodeByteArray(strValue, 0, strValue.length); bitmapView.setImageBitmap(bitmap); }
- 数据库数据
本文标签: AndroidStudio
版权声明:本文标题:AndroidStudio 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688105815h179902.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论