*手机的外部存储空间,这个我们可以理解成电脑的外接移动硬盘,U盘也行。所有的Android设备都有两个文件存储区域:“内部”和“外部”存储器。这两个名称来自早期的Android,当时大多数设备都提供内置的固定的内存(内置存储器)即ROM中的内部存储,外加一个可移动的存储介质,如micro SD卡(外部存储器)。但也有些设备把固定不变的存储空间分成“内部”和“外部”两部分,这样即使没有可移动的存储介质,也总会有两个存储空间,并且不管外部存储器是可移动的,还是固定的,API的行为是相同的。

* 路径: /mnt/sdcard/

*Environment类

getExternalStorageDirectory(); // 获取sd卡的路径

getExternalStorageState(); // 获取sd卡的状态

Environment.MEDIA_MOUNTED // 挂载状态

Environment.MEDIA_UNMOUNTED // 卸载状态

* 需要添加读写SD卡的权限
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

// 检查SD卡是不插入和拔出
public boolean isSdMounted(View view) {
String staus = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(staus)) {
System.out.println("插入了SD卡");
return true;
} else if (Environment.MEDIA_UNMOUNTED.equals(staus)) {
System.out.println("SD卡被拔出了");
return false;
}
return false;
} // 获取SD卡的路径
public String getSdPath(View v) {
File file = Environment.getExternalStorageDirectory();
String path = file.getAbsolutePath();
return path;
} // 获取SD卡可用空间
@SuppressLint("NewApi")
public long getSdFreeSpace(View v) {
File file = Environment.getExternalStorageDirectory();
return file.getFreeSpace();
// 格式化大小
}
package com.example.qq;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader; import android.os.Bundle;
import android.app.Activity;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity { private EditText etPwd;
private EditText etQQ;
private CheckBox cbRemPwd; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etPwd = (EditText) findViewById(R.id.et_pwd);
etQQ = (EditText) findViewById(R.id.et_qq);
cbRemPwd = (CheckBox) findViewById(R.id.cb_rem_pwd); readData();
} /**
* 从文件中读取数据显示在界面上
*/
private void readData() {
File file = new File("/mnt/sdcard/waibu.txt");
try {
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String text = br.readLine();
String[] content = text.split("==");
String qq = content[0];
String pwd = content[1];
//把QQ号码和密码显示在文本输入框
etQQ.setText(qq);
etPwd.setText(pwd);
br.close();
} catch (Exception e) {
e.printStackTrace();
} } /**
* 1. 获取用户输入的QQ号码和密码
* 2. 做非空判断
* 3. 如果用户勾选了复选框,用文件存储密码
*/
public void gelogin(View v){
// System.out.println("点击了按钮");
String pwd = etPwd.getText().toString().trim();
String qq = etQQ.getText().toString().trim();
if(TextUtils.isEmpty(pwd) || TextUtils.isEmpty(qq)){
Toast.makeText(this, "亲,请输入QQ号码或者密码哦 :) ", 0).show(); return;
}
//判断用户是否勾选复选框
boolean checked = cbRemPwd.isChecked();
if (checked) {
//用文件存储密码
try {
File file = new File("/mnt/sdcard/waibu.txt");
FileOutputStream fos = new FileOutputStream(file);
String text = qq+"=="+pwd;
fos.write(text.getBytes());
//释放资源
fos.close();
Toast.makeText(this, "密码存储成功,/mnt/sdcard/waibu.txt", 0).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "存储失败了 :( ", 0).show();
}
} } }

最新文章

  1. 使用localResizeIMG3+WebAPI实现手机端图片上传
  2. bootstrap总结
  3. 转载部长一篇大作:常用排序算法之JavaScript实现
  4. 基础知识《四》---Java多线程学习总结
  5. extjs插件开发上传下载文件简单案例
  6. JS-005-常见下拉列表 Select 和 datalist
  7. ASP.NET MVC SignalR
  8. 利用 SerialPort 控件实现 PC 串口通信
  9. HDU 4720 Naive and Silly Muggles 2013年四川省赛题
  10. C++ Builder平台使用Indy9开发自动FTP程序01
  11. Swift - 工具条(UIToolbar)的用法
  12. JavaScript实例技巧精选(13)—计算在网页上的停留时间
  13. android脚步---APP引导页添加
  14. Eclipse如何导入maven项目,以及配置maven
  15. mysql 开发进阶篇系列 4 SQL 优化(各种优化方法点)
  16. python爬虫——跟踪登录过程以及意外的发现(4)
  17. JavaScript 中this的实现原理
  18. 浅谈基于FormsAuthentication的认证
  19. 【java web】--css+div总结
  20. 架构风格:你真的懂REST吗?

热门文章

  1. jqGrid TreeGrid 加载数据 排序 扩展
  2. pip安装超时解决方案
  3. YOLO---YOLOv3 with OpenCV安装与使用
  4. Python求均值,方差,标准差
  5. ELK架构图示例
  6. Linux文件系统之mv(重命名/移动文件)
  7. [MySQL优化] -- 如何了解SQL的执行频率
  8. codeblock的一个小问题
  9. pssh
  10. 脚本实现PXE装机