
TR NG Đ I H C CÔNG NGH THÔNG TINƯỜ Ạ Ọ Ệ
KHOA CÔNG NGH PH N M MỆ Ầ Ề
Seminar Subject: Data Storage in Android
Giáo viên h ng d n: Cáp Ph m Đình Thăng.ướ ẫ ạ
Sinh viên th c hi n:ự ệ
Nguy n Văn Sinh 105020130ễ
Tôn Ng c T n 10520133ọ ẩ

1 Gi i thi u v cách l u tr trên android:ớ ệ ề ư ữ
Android cung c p cho b n m t s l a ch n đ l u tr d li u c a ng d ng m t cách r tấ ạ ộ ố ự ọ ể ư ữ ữ ệ ủ ứ ụ ộ ấ
b n v ng. Các gi i pháp l u tr tùy thu c vào ph thu c vào s l a ch n c a b n vàề ữ ả ư ữ ộ ụ ộ ự ự ọ ủ ạ
ch ng trình c a b n đang phát tri n.ươ ủ ạ ể
•Shared Storage: D li u c a b n s đ c l u tr d i d ng c p khóa-giá tr ,ữ ệ ủ ạ ẽ ượ ư ữ ướ ạ ặ ị
đây là cách l u tr truy n th ng trên di đ ng. Chúng ta mu n l u tr UI state, userư ữ ề ố ộ ố ư ữ
preferences hay application setting thì đây là m t c ch g n nh đ l u tr .ộ ơ ế ọ ẹ ể ư ữ
•File: Android cho phép chúng ta t i và l u các t p tin trên thi t b di đ ng.ả ư ệ ế ị ộ
•SQLite Databases: L u tr d li u d i d ng m t c u trúc mà b n xây d ngư ữ ữ ệ ướ ạ ộ ấ ạ ự
s n trong m t c s d li u riêng. Cách này th ng đ c dùng nhi u trong androidẵ ộ ơ ở ữ ệ ườ ượ ề
đ xây d ng các ng d ngể ư ứ ụ
•Network Connection: D li u s đ c chia s và l u tr trên web thông quaữ ệ ẽ ượ ẻ ư ữ
máy ch d li u c a b n.ủ ữ ệ ủ ạ
•Ngoài ra, android cung c p cho b n m t cách đ chia s các d li u cá nhânấ ạ ộ ể ẻ ữ ệ
c a ng d ng cho các ng d ng khác thông qua ủ ứ ụ ứ ụ Content Provider. Chúng ta có thể
truy c p Content Provider đ s d ng h th ng đ c phép.ậ ể ử ụ ệ ố ượ
1.1 Shared Storage:
L pớ Shared Preferences cung c pấ m t khuôn kh chungộ ổ cho phép b n l u tr vàạ ư ữ l yấ c pặ
giá trị d i d ng key-value. B n có th s d ng Shared Preferences đ l u b t kì ki u dướ ạ ạ ể ử ụ ể ư ấ ể ữ
li u m c đ nh nào: ệ ặ ị Booleans, floats, ints, longs ho c ặstrings. D li u này s t n t i su tữ ệ ẽ ồ ạ ố
phiên làm vi c c a ng i dùng (ngày c khi ng d ng c a b n có b đóng đi).ệ ủ ườ ả ứ ụ ủ ạ ị
u đi m:Ư ể
•D li u l u tr ch dành riêng cho ng d ng mà nó đ c vi t ra.ữ ệ ư ữ ỉ ứ ụ ượ ế
•Đ c coi là m t ph n thông tin c a h th ng.ượ ộ ầ ủ ệ ố
•Tính b o m t r t cao. ả ậ ấ
Nh c đi m:ượ ể
•Không th l y thông tin d li u d i d ng file.ể ấ ữ ệ ướ ạ

•Dung l ng b nh l u tr th p nên ch phù h p v i vi c l u tr thông tin c uượ ộ ớ ư ữ ấ ỉ ợ ớ ệ ư ữ ấ
hình.
S d ng m t đ i t ng Editor đ l u d li u. Đ có đ c m tử ụ ộ ố ượ ể ư ữ ệ ể ượ ộ đ iố
t ngượ SharedPreferences cho các ng d ng c a b nứ ụ ủ ạ , hãy sử d ngụ m t trongộ hai ph ngươ
th cứ:
•getSharedPreferences (): Sử d ngụ nó n u b n c nế ạ ầ nhi u t p tinề ậ tham
chi uế đ cượ xác đ nhị theo tên, mà b n ch đ nhạ ỉ ị v iớ tham s đ u tiênố ầ .
•getPreferences () : Sử d ngụ đi uề này n uế b n ch c n m tạ ỉ ầ ộ tham chi u đ nế ế
t pậ tin cho ho t đ ng c a b nạ ộ ủ ạ . Vì có duy nh tấ một t pậ tin tham chi u ế cho active
c a b nủ ạ , b n khôngạ c nầ cung c p tên.ấ
//ten cua SharedPreferences
private static final String CONFIGURATION_NAME = "NAME_CONFIG";
1.1.1 T o và l u giá tr vào SharePreferences:ạ ư ị
Đ ghi giá tr vào trong b nh b n c n s d ng m t đ i t ng editor:ể ị ộ ớ ạ ầ ử ụ ộ ố ượ
•G i m t editor thông qua SharedPreference.Editor.ọ ộ
•Thêm các giá tr vào b nh đ m b ng các hàm putString(), putInt(),ị ộ ớ ệ ằ
putBoolean().
•Đ y giá tr vào b nh b ng hàm editor.comit().ẩ ị ộ ớ ằ
Code:
btSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//l y tên c a ng i dùng nh p trong EditText name.ấ ủ ườ ậ
String name =
edtName.getEditableText().toString().trim();
//l y id c a ng i dùng nh p trong EditText id.ấ ủ ườ ậ
String id =
edtID.getEditableText().toString().trim();
//t o m t đ i t ng SharedPreferences ch đạ ộ ố ượ ở ế ộ
MODE_PRIVATE.
SharedPreferences editPreference =
getSharedPreferences(CONFIGURATION_NAME,
Activity.MODE_PRIVATE);

//lay doi tuong Editor dung de luu du lieu vao bo nho
Editor editor = editPreference.edit();
//day du lieu voi cap khoa-gia tri la id-name va bo nho phu
editor.putString(id, name);
//day du lieu tu bo nho phu vao bo nho thiet bi
editor.commit();
}
});
1.1.2 Truy xu t giá tr t SharePreferences:ấ ị ừ
Đ truy c p Shared Preferences thì cũng dùng ph ng th c getSharedPreferences, đ aể ậ ươ ứ ư
vào khóa c a d li u trong SharedPreferences mà chúng ta mu n truy c p, dùng ph ngủ ữ ệ ố ậ ươ
th c SharedPreferences.getString (),SharedPreferences.getInt(), …đ truy xu t giá tr c nứ ể ấ ị ầ
thi t.ế
Code:
btLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//lay id ma nguoi dung nhap thong qua edtID de lay du lieu
ra
String id =
edtID.getEditableText().toString().trim();
//lay doi tuong SharedPreferences thong qua ten va che do
Activity.
SharedPreferences editPreference =
getSharedPreferences(CONFIGURATION_NAME,Activity.MODE_PRIVATE);
//lay du lieu voi 2 tham so la: id va gia tri xuat ra khi khong co
roi sau do set cho edtName
edtName.setText(editPreference.getString(id,CONFIGURATION_NAME));
}
});
Toàn b source code và demo n m trong th m c ộ ằ ư ụ DemoSeminar/Seminar_Share
1.2 L u và đ c các t p tin trong android:ư ọ ậ

Cũng nh các tiêu chu n I/O c a java thì trong android cũng cung c p openFileInput vàư ẩ ủ ấ
openFileOutput đ đ n gi n các công vi c ghi và đ c trên các dòng ho c các file.ể ơ ả ệ ọ ặ
u đi m:Ư ề
•X lí trên file đ n gi n.ử ơ ả
•Đ c file và l u tr file có th nhi u đ nh d ng.ọ ư ữ ể ở ề ị ạ
•Dung l ng file không gi i h n nh cách l u tr SharePreferencesượ ớ ạ ư ư ữ
Nh c đi m:ượ ể
•Không có tính b o m t cao.ả ậ
•Có th b l i khi xung đ t file ho c xung đ t lu ng đ c file.ể ị ỗ ộ ặ ộ ồ ọ
Các l p ti n ích đ x lí file n m trong gói Android.os.Enviromentớ ệ ể ử ằ
Đ x lí các thao tác trên file đ c t t ta nên x d ng các l p n m trong gói java.osể ử ượ ố ử ụ ớ ằ
•File: Thao tác x lí file.ử
•FileInputStream: đ c n i dung file.ọ ộ
•FileOutputStream:Ghi n i dung file.ộ
1.2.1 Đ c file:ọ
Mu n đ c m t file lên ta ph i dung l p ố ọ ộ ả ớ FileInputStream đ m file và dùng l pể ở ớ
InputStreamReader đ m m t dòng đ c file.ể ở ộ ọ
Code:
private String readFile() throws IOException
{
//doc ten cua file tu edtFilePath
FILE_NAME = edtFilePath.getEditableText().toString().trim();
//mo mot file len de doc
FileInputStream ios = openFileInput(FILE_NAME);
//mot kenh truu tuong hoa dung de doc cac dinh dang dau vao
//trong truong hop nay la file
InputStreamReader isr= new InputStreamReader(ios);
//tao mot mang dung de doc du lieu nhan duoc tu file
char[] data = new char[1024];
//dung StringBuffer de nhan du lieu tu file ra
StringBuffer strBuffer = new StringBuffer();