一、登录案例布局
二、登录案例把数据存到data/data目录
1.文件输出流写入文件
2.读取文件
2.1定义一个Map来存放用户名密码
2.2输入了读取文件
3.利用BufferedReader的readLine()读取一行数据
4.Striing中split()方法切割字符串存入Map
5.setText()修改控件text值
三、使用上下文获取常见目录
1)
String path = context.getFilesDir().getPath(); //来获取路径
File file = new File(path,"info.txt");
使用上下文的目录为: /data/data/包名/files/info.txt
2)通过上下文获取FileOutputStream ( FileInputStream 一样 )
FileOutputStream fos = context.openFileOutput("info.txt",0);
FileInputStream fis = context.openFileInput("info.txt",0);
四、把数据保存到sd中
1)
利用工具类Environment中的方法拿到sd卡的路径
String sdPath = Environment.getExternalStorageDirectory().getPath();
File file = new File(sdPath,"info.txt");
2)判断sd状态是否可用
if ( Environment.MEDIA_MOUNTED.equals ( Environment.getExternalStorageState() ) ){
//Environment.getExternalStorageState获取sd卡状态
}
五、获取sd卡空间大小
File file = Environment.getExternalStorageDirectory();
long totalSpace = file.getTotalSpace(); //总大小 (单位是字节)
long usableSpace = file.getUsableSpace(); //可用大小
//数据太大,利用Formatter.formatFileSize()方法来进行数据格式转换
String formatTotalSpace = android.text.format.Formatter.formatFileSize(this,totalSpace);
String formatUsableSpace = android.text.format.Formatter.formatFileSize(this,usableSpace);
tv_kydx.setText("可用大小:"+formatTotalSpace);
tv_zdx.setText("总大小:"+formatUsableSpace);
六、文件权限
1.新建项目定义4个按钮,功能是创建4个文件
创建文件的4个模式:
1)MODE_PRIVATE - rw- rw- ---
2)MODE_APPEND - rw- rw- ---
3)MODE_WORLD_READABLE - rw- rw- r--
4)MODE_WORLD_WRITEABLE - rw- rw- -w-
MODE_PRIVATE与MODE_APPEND区别:
再往文件中写数据,MODE_PRIVATE是直接覆盖,而MODE_APPEND是保留原有数据再在后面追加
2.文件权限含义: r:可读 w:可写 x:可执行
3.验证:新建个android项目来读取上一个项目所创建的文件
4.修改文件权限
使用linux下一个指令(chmod)
打开cmd,进入到要修改的文件的目录下输入:chmod 777 private.txt --------其中777为2中所说用10进制表示的文件权限,private.txt为要修改权限的文件
七、sp练习(用SharedPreferences实现存取数据)
1.步骤
1)获取实例:SharedPreferences sp = getSharedPreferences("comfig",0);
2)获取编辑器:Editor editor = sp.edit();
3)存/取数据:editor.putString("name",username); / sp.getString("name","");
4)提交editor:editor.commit();
2.存
//使用SharedPreferences去保存数据,拿到SharedPreferences的实例
SharedPreferences sp = getSharedPreferences("comfig",0); //第一个参数name,会帮我们生成一个
xml的文件,第二个参数mode模式
SharedPreferences.Editor editor = sp.edit(); //获取sp的编辑器
editor.putString("name",username); //存入数据
editor.putString("password",password);
editor.commit(); //提交editor
3.取
SharedPreferences sp = getSharedPreferences("comfig",0); //获取实例
String name = sp.getString("name",""); //读取用户名,取不到时返回空串
String password = sp.getString("password",""); //读取密码,取不到时返回空串
et_username.setText(name); //把name、password设置到editText上
et_password.setText(password);
4.点记住密码后下次登录依然是选中状态
1)将name,password,记住密码复选框状态存入文件
if(cb_jzpassword.isChecked()){
SharedPreferences.Editor editor = sp.edit();
editor.putString("name",username);
editor.putString("password",password);
editor.putBoolean("jzmm",true);
editor.commit();
}else {
SharedPreferences.Editor editor = sp.edit();
editor.putString("name",username);
editor.putString("password","");
editor.putBoolean("jzmm",false);
editor.commit();
}
2)设置复选框状态
boolean zt = sp.getBoolean("jzmm",false); //从文件中读取状态
cb_jzpassword.setChecked(zt); //将状态设置给控件
八、生成xml文件(StringBuffer方式)模拟将短信内容存入文件
1.创建按钮
2.新建一个java类:Sms
给4个属性address,body,date并生成getter、setter方法
3.在onCreate()中初始化一个假数据
List<Sms> smslist = new ArrayList<Sms>();
for(int i=0;i<10;i++){
Sms sms = new Sms();
sms.setAddress("1008"+i);
sms.setBody("nihao"+i);
sms.setDate("201"+i);
smslist.add(sms); //把sms对象放到集合中
}
4.生成xml文件
定义按钮点击事件
public void click(View v){
StringBuffer sb = new StringBuffer(); //1.创建sb对象
sb.append(<?xml version="1.0" encoding="utf-8"?>); //2.组拼xml文件头
sb.append("<smss>"); //3.组拼xml根节点
for(Sms sms : smsLIsts ){ //4.组拼sms节点
sb.append("<sms>");
sb.append("<address>") //5.组拼address节点
sb.append(sms.getAddress() );
sb.append("</address>")
sb.append("<body>") //6.组拼body节点
sb.append(sms.getBody() );
sb.append("</body>")
sb.append("<date>") //7.组拼date节点
sb.append(sms.getDate() );
sb.append("</date>")
sb.append("</sms>");
}
sb.append("</smss>");
//8.把数据保存到sd卡中
try{
File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml):
FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}