數據存儲訪問:
1文件:
JavaSE IO技術
1)文件的保存:
①獲取文件名稱filename和文件內容filecontent
②爲對應的文件創建FileoutputStream:
如果存儲在手機存儲上,用context.openFileInput(filename) 獲得流;
如果存儲在SDcard上,用new FileOutputStream(new File(...))
根據存儲內容自定義類類型。;
③將文件內容寫入輸出流中 fo.write(....)
④關閉流
2)文件的讀取:read
①獲取文件的名稱
②爲對應的文件創建FileInputStream(方式同文件的保存)
③定義一個緩衝輸出流ByteArrayOutputstream(內存),用於存放讀出來的數據
④fi.read(buffer) os.write(....)
⑤將緩衝流數據轉換後返回
示例://獲取輸入流
FileInputStream fi=context.openFileInput(filename);
Log.i("fi",fi.toString());
//字節數組輸出流:緩存字節數據
ByteArrayOutputStream outStream=new ByteArrayOutputStream();
//將數據全部讀到字節數組輸出流中
byte [] buffer=new byte[1024];
int len=0;
while((len=fi.read(buffer))!=-1){
outStream.write(buffer,0,len);
}
return new String(outStream.toByteArray());
2SharedPreferences(參數)
public class Calc extends Activity {
public static final String PREFS_NAME= "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings= getSharedPreferences(PREFS_NAME, 0);
boolean silent= settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings= getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor= settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
3 SQLite數據庫
①繼承SQLiteOpenHelper類,數據庫生成、表的設計、庫升級
②SQLiteDatabase:操作數據庫,增刪改查
數據庫知識總結:
①創建數據庫
SQLiteOpenHelper getReadableDatabase()或getWriteableDatabese()
②SQLiteOpenHelper自動創建數據庫的原理實現
③數據庫版本變化
④編寫代碼完成增刪改查操作(兩種:SQL語句和調用API)
⑤事務的實現
4內容提供者(Content provider)
可以把任意類型的數據對外共享。
示例:將上一個應用中的person表的數據對外共享。
1)Content Provider的特點
使用Content Provier對外共享數據的好處是:統一了數據的訪問方式
2)繼承ContentProvider ,並在manifest.xml中配置
<provider android:name=".PersonProvider" android:authorities="cn." />
3)uri代表要操作的數據,Uri主要包括兩部分信息:
①需要操作的ContentProvider
②對ContentProvider中的什麼數據進行操作
一個Uri的幾部分組成:
Content://cn.zsw.provider.personprovider/person/10
Scheme:content://
主機名或者authority:cn.zsw.provider.personprovider
路徑:/person/10
ID: 10
③內容提供者的數據可以來之數據庫、文件、網絡
3)繼承ContentProvider 的PersonProvider類寫法
5網絡
①HttpURLConnection
②Socket
③流
(基本上都是java 網絡和IO的知識)