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