《移動(dòng)端應(yīng)用開(kāi)發(fā)》課件 模塊6 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)_第1頁(yè)
《移動(dòng)端應(yīng)用開(kāi)發(fā)》課件 模塊6 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)_第2頁(yè)
《移動(dòng)端應(yīng)用開(kāi)發(fā)》課件 模塊6 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)_第3頁(yè)
《移動(dòng)端應(yīng)用開(kāi)發(fā)》課件 模塊6 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)_第4頁(yè)
《移動(dòng)端應(yīng)用開(kāi)發(fā)》課件 模塊6 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

模塊6數(shù)據(jù)存儲(chǔ)設(shè)計(jì)6.1SharedPreferences6.2SQLite數(shù)據(jù)存儲(chǔ)6.3文件存儲(chǔ)Android學(xué)習(xí)路線(xiàn)1.1學(xué)習(xí)路線(xiàn)

學(xué)習(xí)目標(biāo)1.1Android學(xué)習(xí)目標(biāo)素質(zhì)目標(biāo)知識(shí)目標(biāo)素質(zhì)1.能夠使用命令行實(shí)踐SQLite數(shù)據(jù)庫(kù);2.能夠通過(guò)Java編程實(shí)踐SQLite數(shù)據(jù)庫(kù);3.能夠恰當(dāng)關(guān)聯(lián)模型數(shù)據(jù)和SQLite數(shù)據(jù)表;4.能夠靈活運(yùn)用多種方式存儲(chǔ)數(shù)據(jù)。能力目標(biāo)1.理解Android數(shù)據(jù)存儲(chǔ)方法;2.掌握SQLite數(shù)據(jù)庫(kù)的使用方法;3.掌握SQLite數(shù)據(jù)表和模型數(shù)據(jù)的對(duì)應(yīng)方法;4.掌握SharedPreferences的使用方法。1.變換問(wèn)題觀察的角度和站位;2.增強(qiáng)數(shù)據(jù)敏感性的認(rèn)知;3.鞏固數(shù)據(jù)安全的觀念。1.1數(shù)據(jù)存儲(chǔ)知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1文件存儲(chǔ)√√熟練掌握文件的讀取接口和流程;熟練使用文件的讀取和寫(xiě)入接口實(shí)現(xiàn)文件的操作;2SharedPreferences存儲(chǔ)√√熟練掌握SharedPreferences文件的讀取和寫(xiě)入;3SQLite數(shù)據(jù)庫(kù)√√√掌握SQLite數(shù)據(jù)庫(kù)的使用方法;知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)作業(yè)點(diǎn)評(píng)數(shù)據(jù)的存儲(chǔ)方式?文件存儲(chǔ)的使用?SQLite數(shù)據(jù)庫(kù)的使用方法?知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)預(yù)習(xí)檢查SharedPreferences存儲(chǔ)的方式?如何實(shí)現(xiàn)SharedPreferences存儲(chǔ)?知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)數(shù)據(jù)安全密碼工作是黨和國(guó)家的一項(xiàng)特殊重要工作,直接關(guān)系國(guó)家政治安全、經(jīng)濟(jì)安全、國(guó)防安全和信息安全。2019年10月26日十三屆全國(guó)人大常委會(huì)第十四次會(huì)議通過(guò)了密碼法,密碼法的通過(guò)對(duì)全面提升密碼工作法治化水平起到了關(guān)鍵性作用。

每天,國(guó)內(nèi)有數(shù)以?xún)|計(jì)的用戶(hù)使用密碼保護(hù)自己的信息與財(cái)產(chǎn)安全,不論登錄社交賬戶(hù)進(jìn)行溝通交流,還是利用移動(dòng)支付購(gòu)買(mǎi)商品,這些過(guò)程都有密碼的身影,密碼不分晝夜地保護(hù)著用戶(hù)的安全,其實(shí)背后由“密碼技術(shù)應(yīng)用員”職業(yè)人員默默守護(hù)著密碼的安全。

針對(duì)密碼安全,首先在設(shè)置上要包含大小寫(xiě)字母、數(shù)字和標(biāo)點(diǎn)符號(hào),位數(shù)在8位以上;

不能包含名字、生日、手機(jī)號(hào)、車(chē)牌號(hào)、門(mén)牌號(hào)等關(guān)聯(lián)號(hào)碼;

定期修改密碼,不勾選網(wǎng)站或其他平臺(tái)保存密碼一鍵登錄;知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)方式Android數(shù)據(jù)存儲(chǔ)五種方式;內(nèi)存瞬時(shí)數(shù)據(jù)保存到存儲(chǔ)設(shè)備變?yōu)槌志没臄?shù)據(jù);文件存儲(chǔ):數(shù)據(jù)通過(guò)I/O存儲(chǔ)為文件,用于存儲(chǔ)大數(shù)量的文本或者二進(jìn)制數(shù)據(jù);SharedPreferences存儲(chǔ):數(shù)據(jù)通過(guò)XML文件存儲(chǔ),用于存儲(chǔ)簡(jiǎn)單的參數(shù)設(shè)置;數(shù)據(jù)庫(kù)存儲(chǔ):數(shù)據(jù)通過(guò)輕量級(jí)的SqLite文件存儲(chǔ),用于存儲(chǔ)復(fù)雜而關(guān)聯(lián)數(shù)據(jù);ContentProvider存儲(chǔ):應(yīng)用程序數(shù)據(jù)數(shù)據(jù)共享存儲(chǔ),用于存儲(chǔ)音視頻和通訊錄等系統(tǒng)數(shù)據(jù);網(wǎng)絡(luò)存儲(chǔ);通過(guò)在網(wǎng)絡(luò)上提供存儲(chǔ)空間來(lái)上傳和下載數(shù)據(jù)。這種方式適用于需要云端存儲(chǔ)大量數(shù)的應(yīng)用。問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SharedPreferences

SharedPreferences存儲(chǔ)

存儲(chǔ)結(jié)構(gòu)為Key-Value的鍵值對(duì);適用于簡(jiǎn)單而孤立的數(shù)據(jù)

存儲(chǔ)路徑data/data/應(yīng)用程序包/shared_prefs/文件名.xmlXML文件實(shí)例存儲(chǔ)路徑問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SharedPreferences

SharedPreferences存儲(chǔ)四種操作模式操作模式說(shuō)明Context.MODE_PRIVATE默認(rèn)操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問(wèn)Context.MODE_APPEND模式會(huì)檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件.Context.MODE_WORLD_READABLE表示當(dāng)前文件可以被其他應(yīng)用讀取Context.MODE_WORLD_WRITEABLE表示當(dāng)前文件可以被其他應(yīng)用寫(xiě)入問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SharedPreferences獲取SharedPreferences數(shù)據(jù)的兩種方式this.getPreferences(intmode):調(diào)用Activity對(duì)象的getPreferences()方法通過(guò)Activity對(duì)象獲取的是本Activity私有的Preference,保存在系統(tǒng)中的xml形式的文件的名稱(chēng)為這個(gè)Activity的名字,因此一個(gè)Activity只能有一個(gè),屬于這個(gè)Activity;this.getSharedPreferences(Stringname,intmode):調(diào)用Context對(duì)象的getPreferences()方法;

調(diào)用Context對(duì)象的getSharedPreferences()方法;以第一參數(shù)的name為文件名保存在系統(tǒng)中。問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SharedPreferences通過(guò)SharedPreferences存儲(chǔ)用戶(hù)名和密碼文件保存讀取密碼顯示問(wèn)題導(dǎo)入學(xué)以致用知識(shí)解析課堂小結(jié)課后拓展1.2SharedPreferences

XML文件讀取

1SharedPreferences文件初始化privateSharedPreferencesmSharedPreferences;

privatevoidinitData(){

mSharedPreferences=getSharedPreferences("login",Context.MODE_PRIVATE);

}

2

鍵值對(duì)數(shù)據(jù)寫(xiě)入if(mCheckBoxPsd.isChecked()){

SharedPreferences.EditormEditor=mSharedPreferences.edit();//獲取文件的編輯權(quán)限

mEditor.putString(“User”,name);//寫(xiě)入鍵值“User”

mEditor.putString(“Password”,psd);//寫(xiě)入鍵值“Password”

mEmit();//將鍵值對(duì)寫(xiě)入文件

}

3

讀取鍵值對(duì)數(shù)據(jù)mEtName.setText(mSharedPreferences.getString(“User”,null));//讀取鍵值“User”

mEtPsd.setText(mSharedPreferences.getString(“Password”,null));

//讀取鍵值“Password”問(wèn)題導(dǎo)入學(xué)以致用知識(shí)解析課堂小結(jié)課后拓展1.3小結(jié)本節(jié)通過(guò)密碼法為切入點(diǎn),了解密碼安全使用的注意事項(xiàng),主要講解了數(shù)據(jù)存儲(chǔ)的方式SharedPreferences,以及具體實(shí)現(xiàn)過(guò)程。要求初學(xué)者對(duì)Android的數(shù)據(jù)存儲(chǔ)理解并掌握,方便學(xué)習(xí)后面的知識(shí)。問(wèn)題導(dǎo)入課堂小結(jié)知識(shí)解析學(xué)以致用課后拓展1.4課后作業(yè)?作業(yè)要求存儲(chǔ)登錄界面展示的信息。存儲(chǔ)工匠坊歡迎界面的閱讀量和點(diǎn)贊量。預(yù)習(xí)作業(yè)SQLite數(shù)據(jù)庫(kù)的使用常用的數(shù)據(jù)存儲(chǔ)方式

問(wèn)題導(dǎo)入課后拓展知識(shí)解析學(xué)以致用課堂小結(jié)

每日寄語(yǔ)一個(gè)人的目標(biāo)是從夢(mèng)想開(kāi)始的,一個(gè)人的幸福是從心態(tài)上把握的,而一個(gè)人的成功則是在行動(dòng)中實(shí)現(xiàn)的。因?yàn)橹挥行袆?dòng),才是否滋潤(rùn)你成功的食物和泉水。下節(jié)課見(jiàn)模塊6數(shù)據(jù)存儲(chǔ)設(shè)計(jì)6.1SharedPreferences6.2SQLite數(shù)據(jù)存儲(chǔ)6.3文件存儲(chǔ)Android學(xué)習(xí)路線(xiàn)1.1學(xué)習(xí)路線(xiàn)

學(xué)習(xí)目標(biāo)1.1Android學(xué)習(xí)目標(biāo)素質(zhì)目標(biāo)知識(shí)目標(biāo)素質(zhì)1.能夠使用命令行實(shí)踐SQLite數(shù)據(jù)庫(kù);2.能夠通過(guò)Java編程實(shí)踐SQLite數(shù)據(jù)庫(kù);3.能夠恰當(dāng)關(guān)聯(lián)模型數(shù)據(jù)和SQLite數(shù)據(jù)表;4.能夠靈活運(yùn)用多種方式存儲(chǔ)數(shù)據(jù)。能力目標(biāo)1.理解Android數(shù)據(jù)存儲(chǔ)方法;2.掌握SQLite數(shù)據(jù)庫(kù)的使用方法;3.掌握SQLite數(shù)據(jù)表和模型數(shù)據(jù)的對(duì)應(yīng)方法;4.掌握SharedPreferences的使用方法。1.變換問(wèn)題觀察的角度和站位;2.增強(qiáng)數(shù)據(jù)敏感性的認(rèn)知;3.鞏固數(shù)據(jù)安全的觀念。1.1數(shù)據(jù)存儲(chǔ)知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1文件存儲(chǔ)√√熟練掌握文件的讀取接口和流程;熟練使用文件的讀取和寫(xiě)入接口實(shí)現(xiàn)文件的操作;2SharedPreferences存儲(chǔ)√√熟練掌握SharedPreferences文件的讀取和寫(xiě)入;3SQLites數(shù)據(jù)庫(kù)√√√熟練掌握SQLite數(shù)據(jù)庫(kù)的基本操作;知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)作業(yè)點(diǎn)評(píng)知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展請(qǐng)簡(jiǎn)述Android系統(tǒng)中五種數(shù)據(jù)存儲(chǔ)方式各自的特點(diǎn)。請(qǐng)簡(jiǎn)述SharedPreferences如何存儲(chǔ)數(shù)據(jù)。1.1數(shù)據(jù)存儲(chǔ)預(yù)習(xí)檢查知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展SQLite數(shù)據(jù)庫(kù)的使用ListView控件的作用1.1數(shù)據(jù)存儲(chǔ)數(shù)據(jù)安全密碼工作是黨和國(guó)家的一項(xiàng)特殊重要工作,直接關(guān)系國(guó)家政治安全、經(jīng)濟(jì)安全、國(guó)防安全和信息安全。2019年10月26日十三屆全國(guó)人大常委會(huì)第十四次會(huì)議通過(guò)了密碼法,密碼法的通過(guò)對(duì)全面提升密碼工作法治化水平起到了關(guān)鍵性作用。

每天,國(guó)內(nèi)有數(shù)以?xún)|計(jì)的用戶(hù)使用密碼保護(hù)自己的信息與財(cái)產(chǎn)安全,不論登錄社交賬戶(hù)進(jìn)行溝通交流,還是利用移動(dòng)支付購(gòu)買(mǎi)商品,這些過(guò)程都有密碼的身影,密碼不分晝夜地保護(hù)著用戶(hù)的安全,其實(shí)背后由“密碼技術(shù)應(yīng)用員”職業(yè)人員默默守護(hù)著密碼的安全。

針對(duì)密碼安全,首先在設(shè)置上要包含大小寫(xiě)字母、數(shù)字和標(biāo)點(diǎn)符號(hào),位數(shù)在8位以上;

不能包含名字、生日、手機(jī)號(hào)、車(chē)牌號(hào)、門(mén)牌號(hào)等關(guān)聯(lián)號(hào)碼;

定期修改密碼,不勾選網(wǎng)站或其他平臺(tái)保存密碼一鍵登錄;知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)方式Android數(shù)據(jù)存儲(chǔ)五種方式;內(nèi)存瞬時(shí)數(shù)據(jù)保存到存儲(chǔ)設(shè)備變?yōu)槌志没臄?shù)據(jù);文件存儲(chǔ):數(shù)據(jù)通過(guò)I/O存儲(chǔ)為文件,用于存儲(chǔ)大數(shù)量的文本或者二進(jìn)制數(shù)據(jù);SharedPreferences存儲(chǔ):數(shù)據(jù)通過(guò)XML文件存儲(chǔ),用于存儲(chǔ)簡(jiǎn)單的參數(shù)設(shè)置;數(shù)據(jù)庫(kù)存儲(chǔ):數(shù)據(jù)通過(guò)輕量級(jí)的SqLite文件存儲(chǔ),用于存儲(chǔ)復(fù)雜而關(guān)聯(lián)數(shù)據(jù);ContentProvider存儲(chǔ):應(yīng)用程序數(shù)據(jù)數(shù)據(jù)共享存儲(chǔ),用于存儲(chǔ)音視頻和通訊錄等系統(tǒng)數(shù)據(jù);網(wǎng)絡(luò)存儲(chǔ):通過(guò)在網(wǎng)絡(luò)上提供存儲(chǔ)空間來(lái)上傳和下載數(shù)據(jù)。這種方式適用于需要云端存儲(chǔ)大量數(shù)的應(yīng)用。問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)

SQLite數(shù)據(jù)庫(kù)特點(diǎn)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展SQLite是一個(gè)輕量級(jí)數(shù)據(jù)庫(kù),占用資源非常低,在內(nèi)存中只需要占用幾百KB的存儲(chǔ)空間。SQLite是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),ACID是指數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素。原子性(Atomicity)一致性(Consistency)隔離性(Isolation)持久性(Durability)SQLite保存數(shù)據(jù)時(shí),支持NULL(零)、INTEGER(整數(shù))、REAL(浮點(diǎn)數(shù)字)、TEXT(字符串文本)和BLOB(二進(jìn)制對(duì)象)五種數(shù)據(jù)類(lèi)型。

SQLite數(shù)據(jù)庫(kù)創(chuàng)建問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)publicclassMyHelperextendsSQLiteOpenHelper{publicMyHelper(Contextcontext){super(context,"itcast.db",null,1);}publicvoidonCreate(SQLiteDatabasedb){db.execSQL("CREATETABLEinformation(_idINTEGERPRIMARYKEYAUTOINCREMENT,nameVARCHAR(20),priceINTEGER)");}//當(dāng)數(shù)據(jù)庫(kù)的版本號(hào)增加時(shí)調(diào)用

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){}}添加數(shù)據(jù)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)publicvoidinsert(Stringname,Stringprice){SQLiteDatabasedb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put("name",name);values.put("price",price);longid=db.insert("information",null,values);db.close();}修改數(shù)據(jù)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)publicintupdate(Stringname,Stringprice){ SQLiteDatabasedb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put("price",price);intnumber=db.update("information",values,"name=?",new String[]{name});db.close();returnnumber;}刪除數(shù)據(jù)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)publicintdelete(longid){ SQLiteDatabasedb=helper.getWritableDatabase();intnumber=db.delete("information","_id=?",newString[]{id+""});db.close();returnnumber;}查詢(xún)數(shù)據(jù)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)publicbooleanfind(longid){ SQLiteDatabasedb=helper.getReadableDatabase();

Cursorcursor=db.query("information",null,"_id=?",newString[]{id+""},null,null,null);booleanresult=cursor.moveToNext();cursor.close();

db.close();returnresult;}

SQLite中的事務(wù)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)PersonSQLiteOpenHelperhelper=newPersonSQLiteOpenHelper(getContext());SQLiteDatabasedb=helper.getWritableDatabase();db.beginTransaction();try{db.execSQL("updatepersonsetaccount=account-1000where name=?",newObject[]{"zhangsan"});db.execSQL("updatepersonsetaccount=account+1000where name=?",newObject[]{"wangwu"});db.setTransactionSuccessful();}catch(Exceptione){Log.i("事務(wù)處理失敗",e.toString());}finally{db.endTransaction();db.close();}我的通訊錄問(wèn)題導(dǎo)入學(xué)以致用知識(shí)解析課堂小結(jié)課后拓展1.1SQLite數(shù)據(jù)庫(kù)23功能描述:技術(shù)要點(diǎn):實(shí)現(xiàn)步驟:

1用戶(hù)交互界面的設(shè)計(jì)與實(shí)現(xiàn)界面邏輯代碼的設(shè)計(jì)與實(shí)現(xiàn)創(chuàng)建通訊錄實(shí)現(xiàn)添加,查詢(xún),修改,刪除聯(lián)系人信息。SQLite數(shù)據(jù)庫(kù)的使用。1.4小結(jié)

本章講解了SQLite數(shù)據(jù)庫(kù)的相關(guān)知識(shí),首先簡(jiǎn)單地介紹了SQLite數(shù)據(jù)庫(kù),然后講解了如何使用SQLite數(shù)據(jù)庫(kù),SQLite數(shù)據(jù)庫(kù)知識(shí)點(diǎn)非常重要,在實(shí)際開(kāi)發(fā)中可以實(shí)現(xiàn)很多功能,例如電子商城中的購(gòu)物車(chē)、網(wǎng)易新聞客戶(hù)端等。因此,要求初學(xué)者必須掌握本章知識(shí)。問(wèn)題導(dǎo)入課堂小結(jié)知識(shí)解析學(xué)以致用課后拓展1.5課后作業(yè)?作業(yè)要求請(qǐng)簡(jiǎn)要說(shuō)明SQLite數(shù)據(jù)庫(kù)的創(chuàng)建過(guò)程。請(qǐng)簡(jiǎn)要說(shuō)明BaseAdapter適配器包含幾個(gè)抽象方法,以及這些方法的作用。創(chuàng)建自己的通訊錄。預(yù)習(xí)作業(yè)什么是廣播接收者以及其作用廣播的類(lèi)型

問(wèn)題導(dǎo)入課后拓展知識(shí)解析學(xué)以致用課堂小結(jié)

每日寄語(yǔ)一個(gè)人的目標(biāo)是從夢(mèng)想開(kāi)始的,一個(gè)人的幸福是從心態(tài)上把握的,而一個(gè)人的成功則是在行動(dòng)中實(shí)現(xiàn)的。因?yàn)橹挥行袆?dòng),才是否滋潤(rùn)你成功的食物和泉水。下節(jié)課見(jiàn)模塊6數(shù)據(jù)存儲(chǔ)設(shè)計(jì)6.1SharedPreferences6.2SQLite數(shù)據(jù)存儲(chǔ)6.3文件存儲(chǔ)Android學(xué)習(xí)路線(xiàn)1.1學(xué)習(xí)路線(xiàn)

學(xué)習(xí)目標(biāo)1.1Android學(xué)習(xí)目標(biāo)素質(zhì)目標(biāo)知識(shí)目標(biāo)素質(zhì)1.能夠使用命令行實(shí)踐SQLite數(shù)據(jù)庫(kù);2.能夠通過(guò)Java編程實(shí)踐SQLite數(shù)據(jù)庫(kù);3.能夠恰當(dāng)關(guān)聯(lián)模型數(shù)據(jù)和SQLite數(shù)據(jù)表;4.能夠靈活運(yùn)用多種方式存儲(chǔ)數(shù)據(jù)。能力目標(biāo)1.理解Android數(shù)據(jù)存儲(chǔ)方法;2.掌握SQLite數(shù)據(jù)庫(kù)的使用方法;3.掌握SQLite數(shù)據(jù)表和模型數(shù)據(jù)的對(duì)應(yīng)方法;4.掌握SharedPreferences的使用方法。1.變換問(wèn)題觀察的角度和站位;2.增強(qiáng)數(shù)據(jù)敏感性的認(rèn)知;3.鞏固數(shù)據(jù)安全的觀念。1.1數(shù)據(jù)存儲(chǔ)知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1文件存儲(chǔ)√√熟練掌握文件的讀取接口和流程;熟練使用文件的讀取和寫(xiě)入接口實(shí)現(xiàn)文件的操作;2SharedPreference存儲(chǔ)√√熟練掌握SharedPreference文件的讀取和寫(xiě)入;3SQLites數(shù)據(jù)庫(kù)√√√熟練掌握SQLite數(shù)據(jù)庫(kù)的基本操作;知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)作業(yè)點(diǎn)評(píng)知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展請(qǐng)簡(jiǎn)述Android系統(tǒng)中五種數(shù)據(jù)存儲(chǔ)方式各自的特點(diǎn)。請(qǐng)簡(jiǎn)述SharedPreferences如何存儲(chǔ)數(shù)據(jù)。請(qǐng)簡(jiǎn)述SQList數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程。1.1數(shù)據(jù)存儲(chǔ)預(yù)習(xí)檢查數(shù)據(jù)存儲(chǔ)的方式?如何實(shí)現(xiàn)文件存儲(chǔ)?知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)數(shù)據(jù)安全

《中華人民共和國(guó)數(shù)據(jù)安全法》已由中華人民共和國(guó)第十三屆全國(guó)人民代表大會(huì)常務(wù)委員會(huì)第二十九次會(huì)議于2021年6月10日通過(guò),現(xiàn)予公布,自2021年9月1日起施行。第二十條國(guó)家支持教育、科研機(jī)構(gòu)和企業(yè)等開(kāi)展數(shù)據(jù)開(kāi)發(fā)利用技術(shù)和數(shù)據(jù)安全相關(guān)教育和培訓(xùn),采取多種方式培養(yǎng)數(shù)據(jù)開(kāi)發(fā)利用技術(shù)和數(shù)據(jù)安全專(zhuān)業(yè)人才,促進(jìn)人才交流。知識(shí)解析問(wèn)題導(dǎo)入學(xué)以致用課堂小結(jié)課后拓展1.1數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)方式Android數(shù)據(jù)存儲(chǔ)五種方式;內(nèi)存瞬時(shí)數(shù)據(jù)保存到存儲(chǔ)設(shè)備變?yōu)槌志没臄?shù)據(jù);問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展文件存儲(chǔ):數(shù)據(jù)通過(guò)I/O存儲(chǔ)為文件,用于存儲(chǔ)大數(shù)量的文本或者二進(jìn)制數(shù)據(jù);SharedPreferences存儲(chǔ):數(shù)據(jù)通過(guò)XML文件存儲(chǔ),用于存儲(chǔ)簡(jiǎn)單的參數(shù)設(shè)置;數(shù)據(jù)庫(kù)存儲(chǔ):數(shù)據(jù)通過(guò)輕量級(jí)的SqLite文件存儲(chǔ),用于存儲(chǔ)復(fù)雜而關(guān)聯(lián)數(shù)據(jù);ContentProvider存儲(chǔ):應(yīng)用程序數(shù)據(jù)數(shù)據(jù)共享存儲(chǔ),用于存儲(chǔ)音視頻和通訊錄等系統(tǒng)數(shù)據(jù);網(wǎng)絡(luò)存儲(chǔ):通過(guò)在網(wǎng)絡(luò)上提供存儲(chǔ)空間來(lái)上傳和下載數(shù)據(jù)。這種方式適用于需要云端存儲(chǔ)大量數(shù)的應(yīng)用。1.1文件存儲(chǔ)數(shù)據(jù)存儲(chǔ)方式文件存儲(chǔ)是Android中最基本的一種數(shù)據(jù)存儲(chǔ)方式,它與Java中的文件存儲(chǔ)類(lèi)似,都是通過(guò)I/O流的形式把數(shù)據(jù)存儲(chǔ)到文檔中。Android中的文件存儲(chǔ)分為內(nèi)部存儲(chǔ)和外部存儲(chǔ)。內(nèi)部存儲(chǔ)將應(yīng)用程序中的數(shù)據(jù)以文件方式存儲(chǔ)到設(shè)備的內(nèi)部,當(dāng)創(chuàng)建的應(yīng)用程序被卸載時(shí),其內(nèi)部存儲(chǔ)文件也隨之被刪除。是將文件存儲(chǔ)到一些外部設(shè)備上,例如SD卡或者設(shè)備內(nèi)嵌的存儲(chǔ)卡,屬于永久性的存儲(chǔ)方式。外部存儲(chǔ)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)文件存儲(chǔ)方式Java提供的I/O流存儲(chǔ):FileOutputStream提供openFileOutPut方法寫(xiě)入文件;FileInputStream提供openFileInPut方法讀取文件;Enviroment類(lèi):getExternalStorageDirectory方法對(duì)Android設(shè)備的SD卡進(jìn)行數(shù)據(jù)讀寫(xiě)Enviroment類(lèi)設(shè)置方法說(shuō)明getRootDirectory獲取系統(tǒng)根目錄路徑getDataDirectory獲取系統(tǒng)數(shù)據(jù)目錄路徑getDownloadCacheDirectory獲取下載緩存目錄路徑getExternalStorageDirectory獲取外部存儲(chǔ)(SD卡)目錄路徑getExternalStorageState獲取外部存儲(chǔ)(SD卡)的狀態(tài)getStorageState獲取指定目錄的狀態(tài)問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)通過(guò)文件存儲(chǔ)保存用戶(hù)注冊(cè)信息文件寫(xiě)入文件讀取問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)外部存儲(chǔ)外部存儲(chǔ):是將文件存儲(chǔ)到一些外部設(shè)備上,例如SD卡或者設(shè)備內(nèi)嵌的存儲(chǔ)卡,屬于永久性的存儲(chǔ)方式。//獲取外部存儲(chǔ)中名字叫test.txt的路徑Stringpath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.txt";//創(chuàng)建文件Filefile=newFile(path);接著我們需要判斷文件是否存在,如果不存在,就創(chuàng)建該文件,代碼如下所示:if(!file.exists()){//判斷文件是否存在file.createNewFile();}問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)外部存儲(chǔ)然后通過(guò)輸出流寫(xiě)入自己想要寫(xiě)入的信息,若寫(xiě)入的是字符串信息,代碼如下所示:try{if(!file.exists()){file.createNewFile();}//建立輸出流,將第二個(gè)參數(shù),設(shè)為true表示后面寫(xiě)入的數(shù)據(jù)會(huì)進(jìn)行拼接。舉個(gè)例子,第一次寫(xiě)入數(shù)據(jù)為:"Hello",第二次在寫(xiě)入數(shù)據(jù)"World",最終就會(huì)拼接成"HelloWorld",如果不想拼接可以不填。

FileOutputStreamfileOutputStream=newFileOutputStream(file,true);Stringtext="歡迎來(lái)到智能手機(jī)應(yīng)用軟件開(kāi)發(fā)課堂";fileOutputStream.write(text.getBytes());//通過(guò)字節(jié)的方式寫(xiě)入數(shù)據(jù)fileOutputStream.close();//寫(xiě)入完畢記得關(guān)閉輸出流}catch(IOExceptione){ e.printStackTrace();}

問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)內(nèi)部存儲(chǔ)內(nèi)部存儲(chǔ):是將應(yīng)用程序中的數(shù)據(jù)以文件方式存儲(chǔ)到設(shè)備的內(nèi)部,當(dāng)創(chuàng)建的應(yīng)用程序被卸載時(shí),其內(nèi)部存儲(chǔ)文件也隨之被刪除。Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,我們用Context.getFileDir()獲取內(nèi)部存儲(chǔ)的目錄,代碼如下所示:StringfileName="data.txt"; Stringcontent="helloworld"; FileOutputStream

fos; try{fos=openFileOutput(fileName,MODE_PRIVATE);fos.write(content.getBytes()); fos.close(); }catch(Exceptione){e.printStackTrace(); }

問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)文件存儲(chǔ)的權(quán)限Android7.0后申請(qǐng)?jiān)L問(wèn)SD外部存儲(chǔ)權(quán)限1權(quán)限申請(qǐng)privatevoidgetSdPermission(){

if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE)!=

PackageManager.PERMISSION_GRANTED){//首先檢查應(yīng)用是否有讀取SD卡權(quán)限

ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);}//申請(qǐng)權(quán)限

if(ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)

!=PackageManager.PERMISSION_GRANTED){//檢查應(yīng)用是否有寫(xiě)SD卡權(quán)限

ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);}//申請(qǐng)權(quán)限

}問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)文件存儲(chǔ)的權(quán)限Android7.0后申請(qǐng)?jiān)L問(wèn)SD外部存儲(chǔ)權(quán)限2權(quán)限申請(qǐng)?zhí)幚韕ublicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions,@NonNullint[]grantResults){

switch(requestCode){

case1:

if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){

}else{

Toast.makeText(this,"youdeniedthepermission",Toast.LENGTH_SHORT).show();}

break;}

}問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)文件保存和讀取1文件保存publicstaticvoidsaveText(Stringpath,Stringtxt){

try{

FileOutputStreamfos=newFileOutputStream(path);//使用路徑參數(shù)新建文件輸出流;

fos.write(txt.getBytes());//將文本通過(guò)輸出流保存到文件

fos.close();//關(guān)閉輸出流

}catch(Exceptione){

e.printStackTrace();}}問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)文件保存和讀取2文件讀取publicstaticStringopenText(Stringpath){

StringreadStr=“”;

try{FileInputStreamfis=newFileInputStream(path);//新建文件輸出流

byte[]b=newbyte[fis.available()];//新建字節(jié)數(shù)組

fis.read(b);//將文件內(nèi)容通過(guò)輸入流拷貝到字節(jié)數(shù)組

readStr=newString(b);//將字節(jié)數(shù)組內(nèi)容轉(zhuǎn)換為字符串

fis.close();//關(guān)閉輸入流

}catch(Exceptione){.printStackTrace();}

returnreadStr;}問(wèn)題導(dǎo)入知識(shí)解析學(xué)以致用課堂小結(jié)課后拓展1.1文件存儲(chǔ)數(shù)據(jù)保存1獲取系統(tǒng)時(shí)間publicstaticStringgetNowDateTime(StringformatStr){

Stringformat=formatStr;

if(format==null||format.length()<=0){

format=“yyyyMMddHHmmss”;

}

SimpleDateFormats_format=newSimpleDateFormat(format);//新建時(shí)間格式化對(duì)象

returns_format.format(newDate());

//使用時(shí)間格式化對(duì)象格式化當(dāng)前時(shí)間

}問(wèn)題導(dǎo)入學(xué)以致用知識(shí)解析課堂小結(jié)課后拓展1.1文件存儲(chǔ)數(shù)據(jù)保存2保存數(shù)據(jù)到文件publicstaticStringsaveDataToFile(){//首先判斷SD卡是否可以讀取

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)==true){

//初始化文件路徑

Stringfile_path=Environment.getExternalStorageDirectory()+“/”+getNowDateTime(“”)+“.txt”;

saveText(file_path,content);

//將數(shù)據(jù)保存到文件

mTvPath.setText(“用戶(hù)注冊(cè)信息文件的保存路徑為:\n”+file_path);//在視圖組件顯示文件信息

Toast.makeText(this,“數(shù)據(jù)已寫(xiě)入SD卡文件:”,Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this,"未發(fā)現(xiàn)SD卡,請(qǐng)檢查:",Toast.LENGTH_SHORT).show();}}問(wèn)題導(dǎo)入學(xué)以致用知識(shí)解析課堂小結(jié)課后拓展1.1文件存儲(chǔ)數(shù)據(jù)讀取1獲取文件夾的所有指定后綴名的文件publicstaticArrayList<File>getFileList(Stringpath,String[]extendArray){

ArrayList<File>displayedContent=newArrayList<File>();//新建文件列表對(duì)象

File[]files=null;

//新建文件對(duì)象數(shù)組

Filedirectory=newFile(path);//新建文件路徑對(duì)象

if(extendArray!=null&&extendArray.length>0){

FilenameFilterfileFilter=getTypeFilter(extendArray);//新建文件過(guò)濾器對(duì)象

files=directory.listFiles(fileFilter);//文件夾中過(guò)濾后綴名后存入文件對(duì)象數(shù)組

}else{

files=directory.listFiles();

}

if(files!=null){//將文件對(duì)象數(shù)組中的文件存儲(chǔ)到文件列表對(duì)象

for(Filef:files){

if(!f.isDirectory()&&!f.isHidden()){

displayedContent.add(f);

}

}

}

returndisplayedContent;

}問(wèn)題導(dǎo)入學(xué)以致用知識(shí)解析課堂小結(jié)課后拓展1.1文件存儲(chǔ)數(shù)據(jù)讀取2指定文件夾的所有txt文檔顯示到Spinner控件privatevoidre

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論