一、存儲在手機內存裏,即/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();