本文主要介绍android中如何在外部存储读写数据
sdcard:2.3之前的sd卡路径
mnt/sdcard:4.3之前的sd卡路径
storage/sdcard:4.3之后的sd卡路径
打开file explorer
可以看到sdcard是个空的文件夹,因为这个文件夹是个快捷方式,指向/storag文件夹,接着打开storag文件夹
最简单的打开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卡的真实路径,部分手机品牌会更改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(); } } }