android中访问手机存储,(九)android 中数据存储与访问——保存文件到手机内存

9.1手机的存储区域

手机的存储区域通常有两个地方:一:手机内部存储空间,理解成一块微硬盘/data/data/;二:外部存储空间SD卡

9.2方法捕获异常的原则

如果方法有返回值,则用try catch捕获,如果方法的返回值是Void类型,则使用throws抛出异常

9.3 上下文Context

Context:是一个类,提供一些方便的api 可以得到应用程序的环境,例如:环境的包名,安装路径,资源路径,资产的路径

9.4 保存文件到手机内存——登陆界面例子程序

9.4.1 项目需求

用户登陆界面如下所示,当勾选保存密码时,则将用户名和密码保存到手机内存上,当下次打开登陆界面时,将自动从手机内存中取出用户名和密码回显在界面上。

7dc25400038677549d9ba95972244cc1.png

9.4.2 工程目录结构如下所示

1ee67326f55998af9c1e7874ef057bd6.png

9.4.3 activity_main.xml文件

android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请输入用戶名"android:textSize="18dp" />

android:id="@+id/et_username"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="18dp" />

android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请输入密碼"android:textSize="18dp" />

android:id="@+id/et_pwd"android:layout_width="fill_parent"android:layout_height="wrap_content"android:inputType="numberPassword"android:textSize="18dp" />

android:id="@+id/rg_mode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" >

android:id="@+id/rb_private"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="私有的" />

android:id="@+id/rb_public"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="公有的" />

android:id="@+id/rb_readable"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="可读的" />

android:layout_width="fill_parent"android:layout_height="wrap_content" >

android:id="@+id/cb_checked"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="记住密码"android:textSize="18dp" />

android:id="@+id/bt_login"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="登陆"android:textSize="18dp" />

9.4.4 FileInfo.java文件

packagecom.example.logintest.service;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.util.HashMap;importjava.util.Map;importandroid.content.Context;public classFileInfo {/*** 保存文件到context.getFilesDir()中

*

*@paramcontext

* 上下文

*@paramusername

* 用戶名

*@paramPwd

* 用戶密碼

*@return

*/

public static booleansaveFileUserInfo(Context context, String username,

String Pwd) {

File file= new File(context.getFilesDir(), "userinfo.txt");//context.openFileOutput(file, mode)

try{

FileOutputStream fos= newFileOutputStream(file);//fos.write(username+"##"+Pwd).getB;

fos.write((username + "##" +Pwd).getBytes());

fos.close();return true;

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();return false;

}

}/*** 从文件中读取用户的信息,并保存在Map对象中 從context.getFilesDir()中获得文件目录

*

*@paramcontext

*@return

*/

public static MapgetUserInfo(Context context) {

File file= new File(context.getFilesDir(), "userinfo.txt");

FileInputStream fis;try{

fis= newFileInputStream(file);

BufferedReader br= new BufferedReader(newInputStreamReader(fis));

String str=br.readLine();

String infos[]= str.split("##");

Map map = new HashMap();

map.put("username", infos[0]);

map.put("userpwd", infos[1]);returnmap;

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();return null;

}

}

}

9.4.5 MainActivity.java文件

packagecom.example.logintest;importjava.util.Map;importcom.example.logintest.service.FileInfo;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.os.Bundle;importandroid.text.TextUtils;importandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.CheckBox;importandroid.widget.EditText;importandroid.widget.Toast;public class MainActivity extends Activity implementsOnClickListener {private static final String TAG = "MainActivity";privateEditText et_username;privateEditText et_pwd;privateCheckBox cb_checked;privateButton bt_login;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {//TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et_username= (EditText) this.findViewById(R.id.et_username);

et_pwd= (EditText) this.findViewById(R.id.et_pwd);

cb_checked= (CheckBox) this.findViewById(R.id.cb_checked);

bt_login= (Button) this.findViewById(R.id.bt_login);

bt_login.setOnClickListener(this);

Map map = FileInfo.getUserInfo(this);if (map != null) {

et_username.setText(map.get("username"));

et_pwd.setText(map.get("userpwd"));

}

}

@SuppressLint("ShowToast")

@Overridepublic voidonClick(View v) {//TODO Auto-generated method stub

String userName =et_username.getText().toString().trim();

String userPwd=et_pwd.getText().toString().trim();if (TextUtils.isEmpty(userName) ||TextUtils.isEmpty(userPwd)) {

Toast.makeText(this, "用户名为空或用户密码为空", 1).show();

}else{if(cb_checked.isChecked()) {

Log.i(TAG,"请保存密码");if (FileInfo.saveFileUserInfo(this, userName, userPwd)) {

Log.i(TAG,"用戶信息保存成功");

}

}if ("zhangsan".equals(userName) && "123".equals(userPwd)) {

Toast.makeText(this, "用户登陆", 1).show();

}else{

Toast.makeText(this, "登陆失敗", 1).show();

}

}

}

}

9.4.6 程序运行界面如下所示

810e2a564c5569c5260a530b4393cb96.png

原文:http://www.cnblogs.com/fuyanan/p/4025450.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值