《安卓系統(tǒng)android_黎活明_老師+開發(fā)培訓(xùn)課件(6)》由會(huì)員分享,可在線閱讀,更多相關(guān)《安卓系統(tǒng)android_黎活明_老師+開發(fā)培訓(xùn)課件(6)(4頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),北京傳智播客教育,,*,高級(jí)軟件人才實(shí)作培訓(xùn)專家,!,北京傳智播客教育,,使用文件進(jìn)行數(shù)據(jù)存儲(chǔ),首先給大家介紹使用文件如何對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),,Activity,提供了,openFileOutput(),方法可以用于把數(shù)據(jù)輸出到文件中,具體的實(shí)現(xiàn)過程與在,J2SE,環(huán)境中保存數(shù)據(jù)到文件中是一樣的。,public class FileActivity extends Activity,Override public void onCreate(Bundle savedInstanceState),.,FileOutp
2、utStream outStream=this.openFileOutput(itcast.txt,Context.MODE_PRIVATE);,outStream.write(,傳智播客,.getBytes();,outStream.close();,openFileOutput(),方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“,/”,,如果文件不存在,,Android,會(huì)自動(dòng)創(chuàng)建它。創(chuàng)建的文件保存在,/data/data/files,目錄,如,:,/data/data/cn.itcast.action/files/itcast.txt,,通過點(diǎn)擊,Eclipse,菜單“,Windo
3、w”-“Show View”-“Other”,,在對(duì)話窗口中展開,android,文件夾,選擇下面的,File Explorer,視圖,然后在,File Explorer,視圖中展開,/data/data/files,目錄就可以看到該文件。,openFileOutput(),方法的第二參數(shù)用于指定操作模式,有四種模式,分別為:,Context.MODE_PRIVATE,=0,Context.MODE_APPEND,=32768,Context.MODE_WORLD_READABLE=1,Context.MODE_WORLD_WRITEABLE=2,北京傳智播客教育,,使用文件進(jìn)行數(shù)據(jù)存儲(chǔ),Co
4、ntext.MODE_PRIVATE,:為默認(rèn)操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問,在該模式下,寫入的內(nèi)容會(huì)覆蓋原文件的內(nèi)容,如果想把新寫入的內(nèi)容追加到原文件中??梢允褂?Context.MODE_APPEND,Context.MODE_APPEND,:,模式會(huì)檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件。,Context.MODE_WORLD_READABLE,和,Context.MODE_WORLD_WRITEABLE,用來控制其他應(yīng)用是否有權(quán)限讀寫該文件。,MODE_WORLD_READABLE,:,表示當(dāng)前文件可以被其他應(yīng)用讀??;,MODE_WORLD_WRI
5、TEABLE,:,表示當(dāng)前文件可以被其他應(yīng)用寫入。,如果希望文件被其他應(yīng)用讀和寫,可以傳入:,openFileOutput(itcast.txt,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE,);,android,有一套自己的安全模型,當(dāng)應(yīng)用程序,(.apk),在安裝時(shí)系統(tǒng)就會(huì)分配給他一個(gè),userid,,當(dāng)該應(yīng)用要去訪問其他資源比如文件的時(shí)候,就需要,userid,匹配。默認(rèn)情況下,任何應(yīng)用創(chuàng)建的文件,,sharedpreferences,,數(shù)據(jù)庫都應(yīng)該是私有的(位于,/data/data/files,),其他程序無法訪問。
6、除非在創(chuàng)建時(shí)指定了,Context.MODE_WORLD_READABLE,或者,Context.MODE_WORLD_WRITEABLE,,只有這樣其他程序才能正確訪問。,北京傳智播客教育,,讀取文件內(nèi)容,如果要打開存放在,/data/data/files,目錄應(yīng)用私有的文件,可以使用,Activity,提供,openFileInput(),方法。,FileInputStream inStream=this.getContext().openFileInput(itcast.txt);,Log.i(FileTest,readInStream(inStream);,readInStream()
7、,的方法請(qǐng)看本頁下面?zhèn)渥ⅰ?或者直接使用文件的絕對(duì)路徑:,File file=new File(/data/data/,cn.itcast.action,/files/itcast.txt);,FileInputStream inStream=new FileInputStream(file);,Log.i(FileTest,readInStream(inStream);,注意:上面文件路徑中的,“cn.itcast.action”,為應(yīng)用所在包,當(dāng)你在編寫代碼時(shí)應(yīng)替換為你自己應(yīng)用使用的包。,對(duì)于私有文件只能被創(chuàng)建該文件的應(yīng)用訪問,如果希望文件能被其他應(yīng)用讀和寫,可以在創(chuàng)建文件時(shí),指定,Con
8、text.MODE_WORLD_READABLE,和,Context.MODE_WORLD_WRITEABLE,權(quán)限。,Activity,還提供了,getCacheDir(),和,getFilesDir(),方法:,getCacheDir(),方法用于獲取,/data/data/cache,目錄,getFilesDir(),方法用于獲取,/data/data/files,目錄,http:/www.anzhuo.cc/安卓手機(jī)論壇,北京傳智播客教育,,把文件存放在,SDCard,使用,Activity,的,openFileOutput(),方法保存文件,文件是存放在手機(jī)空間上,一般手機(jī)的存儲(chǔ)空間
9、不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對(duì)于像視頻這樣的大文件,我們可以把它存放在,SDCard,。,SDCard,是干什么的?你可以把它看作是移動(dòng)硬盤或,U,盤。,在模擬器中使用,SDCard,,你需要先創(chuàng)建一張,SDCard,卡(當(dāng)然不是真的,SDCard,,只是鏡像文件)。創(chuàng)建,SDCard,可以在,Eclipse,創(chuàng)建模擬器時(shí)隨同創(chuàng)建,也可以使用,DOS,命令進(jìn)行創(chuàng)建,如下:,在,Dos,窗口中進(jìn)入,android SDK,安裝路徑的,tools,目錄,,,輸入以下命令創(chuàng)建一張容量為,2G,的,SDCard,,文件后綴可以隨便取,建議使用,.img,:,mksdcard,2048M,D:AndroidToolsdcard.img,在程序中訪問,SDCard,,你需要申請(qǐng)?jiān)L問,SDCard,的權(quán)限。,在,AndroidManifest.xml,中加入訪問,SDCard,的權(quán)限如下,:,