文件存儲
不對數(shù)據(jù)進行任何格式化處理盐杂,所有的數(shù)據(jù)都原封不動的儲存到文件中,比較適合保存一些簡單的文本數(shù)據(jù)哆窿。
public void sava(){
String data = "Data to sava";
FileOutPutStream out = null;
BufferedWriter writer = null;
try{
//openFileOutPut方法為Context類提供的一個方法链烈,第一個參數(shù)為文件名,不包含路 //徑所有文件都在/data/data/<package_name>/files/目錄下挚躯,第二個參數(shù)是文件 //操作模式强衡,MODE_PRIVATE表示當(dāng)有指定文件名的文件時,會覆蓋原來文件的內(nèi)容码荔,另
//類型是MODE_APPEND漩勤,表示如果文件存在就追加內(nèi)容,不存在則創(chuàng)建文件并增加內(nèi)容缩搅。
out = openFileOutPut("data",Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer,write(data);
}catch(IOException e){
e.printStackTrace);
}finally{
try{
if(writer != null){
writer.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
public String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.reader.readLine()) != null) {
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
SharedPreferences
一種輕量型的存儲方式越败,使用鍵值對的方式存儲數(shù)據(jù),存儲數(shù)據(jù)需要提供對應(yīng)的鍵硼瓣,取數(shù)據(jù)時根據(jù)相應(yīng)的鍵取出數(shù)據(jù)究飞。
public void sava(String data){
SharedPreference.Edit edit = getSharedPreferences("data",MODE_PRIVATE);
edit.putString("name","TOM");
edit.putInt("age",22);
edit.apply();
}
SQLite數(shù)據(jù)庫
Android系統(tǒng)內(nèi)置的一種輕量級關(guān)系型數(shù)據(jù)庫,運算速度快 堂鲤,占用資源少亿傅,適合在移動設(shè)備上使用,支持標(biāo)準(zhǔn)的SQL語法和ACID事物瘟栖。
//SQLite提供了創(chuàng)建和管理數(shù)據(jù)庫的幫助類SQLiteOpenHelper葵擎,但是是抽象類,需要實現(xiàn)更新和創(chuàng)建數(shù)據(jù)庫的方法onCreate和onUpdate;
public class MyDatebaseHelper extends SQLiteOpenHelper{
public static final String CREATE_BOOK = "create table Book(" +
"id integer primary key autoincrement," +
"author text," +
"price real," +
"name text)";
private Context mContext;
public MyDatebaseHelper(@Nullable Context context,
@Nullable String name,
@Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class ActivityCollector extends AppCompatActivity {
private MyDatebaseHelper mMyDatebaseHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMyDatebaseHelper = new MyDatebaseHelper(this,"BookStore.db",null,1);
//實例化方法有g(shù)etWritableDatabase()(以可寫方式打開數(shù)據(jù)庫慢宗,存儲空間不夠?qū)⒊? //現(xiàn)一處)和getReadableDatabase()(以可讀方式打開數(shù)據(jù)庫)
mMyDatebaseHelper.getWritableDatabase();
//mMyDatebaseHelper.getReadableDatabase()
}
}
LitePal
是一款開源的Android數(shù)據(jù)庫框架坪蚁,采用對象關(guān)系映射的模式對數(shù)據(jù)庫功能進行了封裝奔穿。