Android提供了几种数据或文件的存储方式:

读写sdcardSharedPreference,数据库

下面初步了解一下。

一.读写sdcard。

android中文件读写到sdcard与一般java思路一样,通过I/O流进行读写。下面直接代码:

添加权限:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

public class SavecontentService {private Context context;   public SavecontentService(Context context){   this.context=context;   }//向sdcard中存储文件(filename为保存的文件名,content为保存在文件中的内容)   public boolean saveContentToSdcard(String filename,String content){   boolean flag=false;   FileOutputStream fileOutputStream=null;   //获得存储卡所在路径   File file=new File(Environment.getExternalStorageDirectory(),filename);   //判断sdcard是否可用   if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){   try {fileOutputStream=new FileOutputStream(file);fileOutputStream.write(content.getBytes());flag=true;} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(fileOutputStream!=null){try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}   }   return flag;   }//从sdcard中获取文件   public String getContentFromSdcard(String filename){   FileInputStream fileInputStream=null;   //缓存的流,和磁盘无关,不需要关闭   ByteArrayOutputStream outputStream=new ByteArrayOutputStream();   File file=new File(Environment.getExternalStorageDirectory(),filename);   if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){   try {fileInputStream=new FileInputStream(file);int len=0;byte data[]=new byte[1024];while((len=fileInputStream.read(data))!=-1){outputStream.write(data,0, len);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(fileInputStream!=null){try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}}   }   return new String(outputStream.toByteArray());   }}

二.SharedPreference。

它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下

public class MySharedPreference {   private Context context;   public MySharedPreference(Context context){   this.context=context;   }//保存信息   public boolean saveContent(String username,String password){   boolean flag=false;   SharedPreferences sharedPreference=context.getSharedPreferences("userinfo",Context.MODE_PRIVATE);   //对数据进行编辑   SharedPreferences.Editor edit=sharedPreference.edit();  //获取编辑器   edit.putString("username", username);   edit.putString("password",password);   flag=edit.commit(); //将数据保存至存储介质   return flag;   }//获取信息   public HashMap<String,Object> getConten(){   HashMap<String,Object> map=new HashMap<String, Object>();           //userinfo为文件的名称,名称不用带后缀,后缀会由Android自动加上 Context.MODE_PRIVATE为文件的操作模式   SharedPreferences sharedPreference=context.getSharedPreferences("userinfo",Context.MODE_PRIVATE);   String uname=sharedPreference.getString("username","");  //获取不到则默认为空   String pwd=sharedPreference.getString("password","");   map.put("username",uname);   map.put("password",pwd);   return map;   }}

三.操作数据库。

android提供的SQLite是一个很小的关系数据库。我们通常通过SQLiteOpenHelper这个辅助类来管理数据库的创建和版本。

所有继承SQLiteOpenHelper的类必须实现下面的构造函数:

public DatabaseHelper(Context context,String name,CursorFactory factory,int version)

context ——上下文对象。name—— 数据库名称。factory—— 数据库游标工厂。version—— 数据库版本

该类的方法:

getReadableDatabase() getWriteDatabase() 通过这两个方法创建或打开一个可以读写的数据库,返回SQLiteDatabase对象对数据库进行操作。

public class DbOpenHelper extends SQLiteOpenHelper{    private static String name="myDb.db";  //数据库名    private static int version=1;   //数据库版本号    public DbOpenHelper(Context context ) {super(context, name, null, version);}       //数据库创建时 第一次被调用,完成数据表的创建@Overridepublic void onCreate(SQLiteDatabase db) {//支持数据库类型,整形,字符串类型,日期类型,二进制的数据类型       String sql="create table person(id integer primary key autoincrement,name varchar(64),address varchar(64))";db.execSQL(sql);}        //升级数据库版本方法@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {String sql="alert table person add sex varchar(8)";  //向表中插入一个属性db.execSQL(sql);}}

对数据库操作的类:

SQLiteDatabase有对应的方法进行数据库才操作(参考API)

public class DbDemo{    DbOpenHelper helper=null;    public DbDemo(Context context){    helper=new DbOpenHelper(context);    }//增加数据public boolean addObject(String[] args) {boolean flag=false;SQLiteDatabase database=helper.getWritableDatabase();String sql="insert into person(name,address) values(?,?)";database.execSQL(sql,args);flag=true;database.close();return flag;}//删除数据public boolean deleteObject(String[] args) {boolean flag=false;SQLiteDatabase database=helper.getWritableDatabase();String sql="delete from person where id=?";database.execSQL(sql,args);flag=true;database.close();return flag;}//更新数据public boolean updateObject(String[] args) {boolean flag=false;SQLiteDatabase database=helper.getWritableDatabase();String sql="update person set name=?,address=?";database.execSQL(sql);flag=true;database.close();return flag;}//获取一条记录public Map<String, String> getObject(String[] args) {Map<String,String> map=new HashMap<String, String>();SQLiteDatabase database=helper.getReadableDatabase(); //获取数据库String sql="select * from person where id=?";Cursor cursor=database.rawQuery(sql, args);  //获取游标while(cursor.moveToNext()){for(int i=0;i<cursor.getColumnCount();i++){                                //获取列名String name=cursor.getColumnName(i);                                 //获取该列对应的数据String value=cursor.getString(cursor.getColumnIndex(name));map.put(name, value);}}return map;}//获取一组数据public List<Map<String, String>> getlistObject(String[] args) {List<Map<String,String>> list=new ArrayList<Map<String,String>>();SQLiteDatabase database=helper.getReadableDatabase();String sql="select * from person";Cursor cursor=database.rawQuery(sql, args);while(cursor.moveToNext()){Map<String, String> map=new HashMap<String, String>();for(int i=0;i<cursor.getColumnCount();i++){String name=cursor.getColumnName(i);String value=cursor.getString(cursor.getColumnIndex(name));map.put(name, value);}list.add(map);}return list;}}

测试类:

public class MyTest extends AndroidTestCase{private final String TAG="MyTest";    public MyTest(){        }      /*     * 存储数据到数据库     */    public void creartDb(){    DbOpenHelper openhelper=new DbOpenHelper(getContext());    openhelper.getWritableDatabase();    }    public void addobject(){    DbDemo service=new DbDemo(getContext());    String[] objects={"fb","湖南"};    boolean flag=service.addObject(objects);    Log.i(TAG, "---->>"+flag);    }}

更多相关文章

  1. Android读取JSON格式数据
  2. Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
  3. Android Day03-SQLite数据库操作及ListView详解
  4. Android联系人数据库全解析-2.0以上
  5. android 实用sax 读取xml文件内容 附源码
  6. android遍历sd卡中的所有文件

随机推荐

  1. Android中AIDL的使用(一) 之 AIDL经典示
  2. android解析XML文件的三方法之DOM
  3. Android(安卓)界面滑动实现---Scroller类
  4. Picasso之图片缓存机制
  5. Android(安卓)Studio安卓学习笔记(三)And
  6. android里的线程和进程
  7. Android进阶知识树——Android(安卓)多进
  8. Android(安卓)各大手机品牌手机跳转到权
  9. Android开发——利用Cursor+CursorAdapte
  10. 一个不想当作家的程序员不是好爸爸(3)