首先了解一下android的数据存储方式:文件流的读取,SQLite,Content Provider以及Preference.。 注:resource和assets中的文件用户方面是只可以读取不能够进行写的操作的。
Content Provider作为程序之间唯一共享数据途径,用在这里不是很合适。所以,
第一种方式,使用FileInputStream,FileOutputStreamdui类实现文件I/O操作,直接往手机中存储数据。
第二种方式,使用SQLite,通过SQLiteDatabase类中方法操作数据。
第三种方式,Preference用于存储简单数据类型的数据,一些设置信息的保存。个人认为用在这里最合适。 它利用键值对存储的。例:
存储:SharedPreferences.Editor editor =sp.edit();
editor.putString(KEY_TEXT,"yonghu");
editor.commit();
获取 :sp =getPreferences(MODE_PRIVATE);
String result =sp.getString(KEY_TEXT,null);
方法1:直接打开手机内存输入输出流进行存储数据
需要在清单文件加入读写内存卡权限
//代码
public static void saveToFile(byte[] data){
File file = Environment.getExternalStorageDirectory();
//存储在内存卡mydata文件中
File dataFile = new File(file,"/mydata");
if(!dataFile.exists()){
try {
dataFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(dataFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
方法2:少量数据使用sharepreference,基本上是用来存储程序配置
SharedPreferences sp = context.getSharedPreferences("config",Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putBoolean("key", true);
//其他的还有String,int,long等基本类型
editor.commit();
方法3:使用Sqlite
先继承SqliteOpenHelper作为数据库打开帮助类
class Data extends SQLiteOpenHelper{
public Data(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table data("+
"varchar(20) name)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//使用sql语句进行数据操作
Data data = new Data(this, "asd", null, 1);
SQLiteDatabase database = data.getWritableDatabase();
String sql="insert into data values('test')";
database.execSQL(sql);
database.close();
如果是字符串,可以在res/value/array里面存放字符串和字符串数组。