国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android編程中FileOutputStream與openFileOutput()的區(qū)別分析

2020-04-11 10:51:07
字體:
供稿:網(wǎng)友

本文實例分析了Android編程中FileOutputStream與openFileOutput()的區(qū)別。分享給大家供大家參考,具體如下:

openFileOutput()

首先給大家介紹使用文件如何對數(shù)據(jù)進(jìn)行存儲,Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的。

public void save(){    try {      FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);      outStream.write(text.getText().toString().getBytes());      outStream.close();      Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();    } catch (FileNotFoundException e) {      return;    }    catch (IOException e){      return ;    }}

openFileOutput()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符"/" ,如果文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/<package name>/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,通過點擊Eclipse菜單"Window"-"Show View"-"Other",在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。

openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE    =  0
Context.MODE_APPEND    =  32768
Context.MODE_WORLD_READABLE =  1
Context.MODE_WORLD_WRITEABLE =  2
Context.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_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫入。
如果希望文件被其他應(yīng)用讀和寫,可以傳入:

復(fù)制代碼 代碼如下:
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/<package name>/files),其他程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。

讀取文件內(nèi)容

public void load(){  try {    FileInputStream inStream=this.openFileInput("a.txt");    ByteArrayOutputStream stream=new ByteArrayOutputStream();    byte[] buffer=new byte[1024];    int length=-1;    while((length=inStream.read(buffer))!=-1)  {      stream.write(buffer,0,length);    }    stream.close();    inStream.close();    text.setText(stream.toString());    Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();  } catch (FileNotFoundException e) {    e.printStackTrace();  }  catch (IOException e){    return ;  }}

對于私有文件只能被創(chuàng)建該文件的應(yīng)用訪問,如果希望文件能被其他應(yīng)用讀和寫,可以在創(chuàng)建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權(quán)限。

Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于獲取/data/data/<package name>/cache目錄
getFilesDir()方法用于獲取/data/data/<package name>/files目錄

把文件放入SD卡

使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對于像視頻這樣的大文件,我們可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移動硬盤或U盤。

在模擬器中使用SDCard,你需要先創(chuàng)建一張SDCard卡(當(dāng)然不是真的SDCard,只是鏡像文件)。創(chuàng)建SDCard可以在Eclipse創(chuàng)建模擬器時隨同創(chuàng)建,也可以使用DOS命令進(jìn)行創(chuàng)建,如下:

在Dos窗口中進(jìn)入android SDK安裝路徑的tools目錄,輸入以下命令創(chuàng)建一張容量為2G的SDCard,文件后綴可以隨便取,建議使用.img:

mksdcard 2048M D:/AndroidTool/sdcard.img

在程序中訪問SDCard,你需要申請訪問SDCard的權(quán)限。

在AndroidManifest.xml中加入訪問SDCard的權(quán)限如下:

<!

主站蜘蛛池模板:
峨山|
崇礼县|
惠安县|
呈贡县|
滦南县|
彭山县|
彰化县|
安乡县|
佛山市|
新昌县|
南木林县|
水富县|
响水县|
绥阳县|
桐柏县|
巴马|
甘南县|
丰镇市|
若尔盖县|
来安县|
陇南市|
班戈县|
洱源县|
南宫市|
星子县|
陵川县|
阜新市|
沭阳县|
玛多县|
海丰县|
浏阳市|
泽普县|
铜鼓县|
陕西省|
巨鹿县|
辽宁省|
南宫市|
宜阳县|
安化县|
孟连|
雅江县|