本文主要介紹android中如何在外部存儲讀寫數據 sd卡的路徑 sdcard:2.3之前的sd卡路徑 mnt/sdcard:4.3之前的sd卡路徑 storage/sdcard:4.3之後的sd卡路徑 打開file explorer 可以看到sdcard是個空的文件夾,因為這個文件夾是個快捷方式, ...
本文主要介紹android中如何在外部存儲讀寫數據
sd卡的路徑
sdcard:2.3之前的sd卡路徑
mnt/sdcard:4.3之前的sd卡路徑
storage/sdcard:4.3之後的sd卡路徑
打開file explorer
可以看到sdcard是個空的文件夾,因為這個文件夾是個快捷方式,指向/storag文件夾,接著打開storag文件夾
讀寫sd卡
最簡單的打開sd卡的方式
File file = new File("sdcard/info.txt");
* 寫sd卡需要許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
運行程式
* 讀sd卡,在4.0之前不需要許可權,4.0之後可以設置為需要
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
通過api獲取sd卡的路徑
* 使用api獲得sd卡的真實路徑,部分手機品牌會更改sd卡的路徑
Environment.getExternalStorageDirectory()
* 判斷sd卡是否準備就緒
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
完整代碼如下:
public void saveAccount(String name, String pass) { // 判斷sd卡狀態 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 得到一個file對象,路徑是sd卡的真實路徑 File file = new File("sdcard/info.txt"); try { FileOutputStream fos = new FileOutputStream(file); fos.write((name + "##" + pass).getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(this, "sd卡不可用喲", 0).show(); } } public void loadAccount() { File file = new File("sdcard/info.txt"); if (file.exists()) { try { FileInputStream fis = new FileInputStream(file); // 把位元組流轉換為位元組流 BufferedReader br = new BufferedReader(new InputStreamReader( fis)); String text = br.readLine(); String[] s = text.split("##"); // 獲取用戶輸入的賬號和密碼 EditText et_name = (EditText) findViewById(R.id.et_name); EditText et_pass = (EditText) findViewById(R.id.et_pass); et_name.setText(s[0]); et_pass.setText(s[1]); } catch (Exception e) { e.printStackTrace(); } } }