Android數據存儲之文件存儲

一、存儲在手機內存裏,即/data/data/<package name>/files下面,例如/data/data/com.lhp.controlPad/a.txt。代碼如下

public void save(){
try{
FileOutputStream outStream=openFileOutput("a.txt",Context.MODE_APPEND);
outStream.write(text.getText().toString().getBytes());
outStream.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}

penFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符“/” ,如果文件不存在,Android 會自動創建它。openFileOutput()方法的第二個參數用於指定操作模式,共有四種,分別爲:

Context.MODE_PRIVATE:默認的操作模式,代表文件是私有數據,只能被本應用程序訪問。在該模式下,寫入的內容會覆蓋原來的內容,如果想把寫入的文件追加到原文件的末尾,用Context.MODE_APPEND模式。

Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。

Context.MODE_WORLD_READABLE:

Context.MODE_WORLD_WRITABLE:控制其他應用程序是否有權限讀寫該文件。


讀取文件內容:

public void read(){
try{
FileInputStream inStream=openFileInput("a.txt");
byte[] buffer=new byte[1024];
inStream.read(buffer);
inStream.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}


二、把文件放入SD卡

當文件比較大的時候我們一般存放在SDcard上,在程序中訪問sd卡,首先需要獲得相應的權限,

在AndroidManifest.xml文件中加入訪問sd卡的權限如下:

<!--在SDCard中創建和刪除文件的權限-->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!--往SDCard中寫入數據權限-->

<uses-permission android:name="android:permission.WRITE_EXTERNAL_STORAGE"/>

要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,並且可以進行讀寫。

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

         File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄

         File saveFile = new File(sdCardDir, “a.txt”);

       FileOutputStream outStream = new FileOutputStream(saveFile);

         outStream.write("test".getBytes());

         outStream.close();

}

Environment.getExternalStorageState()方法用於獲取SDCard的狀態,如果手機裝有SDCard,並且可以進行讀寫,那麼方法返回的狀態等於Environment.MEDIA_MOUNTED。

Environment.getExternalStorageDirectory()方法用於獲取SDCard的目錄,當然要獲取SDCard的目錄,你也可以這樣寫:

File sdCardDir = new File("/sdcard"); //獲取SDCard目錄

File saveFile = new File(sdCardDir, "itcast.txt"); 

//上面兩句代碼可以合成一句: File saveFile = new File("/sdcard/a.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("test".getBytes());

outStream.close();



發佈了22 篇原創文章 · 獲贊 4 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章