三個混淆的概念
1.內存 memory<==>設備的容量 內存指設備的容量,內部存儲外部存儲指概念
2.內部存儲 InternalSorage <==> 文件存儲在內部存儲區,只能當前應用訪問到
3.外部存儲 ExternalStorage <==> 存儲於設備中的特殊位置,位置因為手機不一樣而不一樣,可能在storage/sdcard或者mnt/xxxx/0下
外部存儲的位置可使用Environment.getExternalStorageDirectory().getAbsolutePath()獲得
外部目錄
1.公有目錄(九大公有目錄):(DCIM、DOWNLOAD等),直接存儲在外部存儲的根目錄下,需要申請權限
2.私有目錄:(Android/data/應用包名),只能被當前應用訪問到
說明:
1.在實際開發中不建議在內部存儲中存儲數據,因為容量很有限
2.在實際開發中經常講把數據存儲到私有目錄,便於系統維護,軟件卸載了數據就刪除了
代碼邏輯
寫操作
android6.0以下:
①:利用外部getExternalStorageDirectory獲取根目錄,直接在后面加上想創建的文件
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/text.txt";
②:創建文件,文件若不存在則調用file.createNewFile()
File file = new File(path);
③:向文件中寫內容,自然要創建文件輸出流的操作,調用輸出流的write方法
FileOutputStream out_file = new FileOutputStream(path,true);
String will_write = editInput.getText().toString(); //獲取edittext的內容
out_file.write(will_write.getBytes());
安卓6.0以上需要首先動態申請權限,在下一篇文章中講述如何使用動態申請權限
讀操作
①:讀文件需要文件輸入流
FileInputStream fis = new FileInputStream(path);
//讀取文件存儲在byte數組中
byte[] b = new byte[1024];
//讀取文件內容,並獲取讀取的長度
int len = fis.read(b);
//將byte轉換城字符串供輸出
String str = new String(b,0,len);