Android数据存储----储存到文件

下面以QQ登陆为案例介绍数据存储,需要提醒的是这是存储到文件里的。

功能:

①打开应用时,会自动去填充输入框的内容。

②登陆时,会有相关的提示。

运行效果:

视图页面xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.qqlogin.MainActivity"
    android:orientation="vertical"
     >
    <EditText
        android:id="@+id/qq_userName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="QQ号\\手机\\邮箱"/>
   <EditText
        android:id="@+id/qq_passWord"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:password="true"
        android:hint="密码"/>
   <CheckBox
       	android:id="@+id/qq_remenberPWD"
       	android:layout_width="wrap_content"
       	android:layout_height="wrap_content"
       	android:checked="true"
       	android:text="记住密码"/>
   <Button
        android:id="@+id/qq_loginButtom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登陆"
        />

</LinearLayout>

业务逻辑代码:

package com.example.qqlogin;

import java.util.Map;

import com.example.qqlogin.utils.Utils;

import android.app.Activity;
import android.nfc.Tag;
import android.os.Bundle;
import android.text.StaticLayout;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

	private EditText userName;
	private EditText passWord;
	private CheckBox checkBox;
	private static String Tag ="MainActivity" ;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		userName = (EditText) findViewById(R.id.qq_userName);
		passWord = (EditText) findViewById(R.id.qq_passWord);
		checkBox = (CheckBox) findViewById(R.id.qq_remenberPWD);
		Button btn  = (Button) findViewById(R.id.qq_loginButtom);
		btn.setOnClickListener(this);

		if(Utils.getUAndP()!=null){
			Map<String,String > map = Utils.getUAndP();
			userName.setText(map.get("name"));
			passWord.setText(map.get("passWord"));
		}
	}

	@Override
	public void onClick(View v) {
		//获取内容
		String user = userName.getText().toString();
		String pwd = passWord.getText().toString();
		//判断是否为空
		if(TextUtils.isEmpty(user)||TextUtils.isEmpty(pwd)){
			Toast.makeText(this, "账号密码不为空",Toast.LENGTH_SHORT).show();
			return;
		}
		//判断是否选择记住密码
		if(checkBox.isChecked()){
			if(	Utils.savaUserInfo(user, pwd)){
				Toast.makeText(this, "保存成功", 0).show();
			}
		}
		Toast.makeText(this, "登录成功", 0).show();
	}

}

相关的工具类:

package com.example.qqlogin.utils;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.w3c.dom.UserDataHandler;

import android.text.TextUtils;

public class Utils {

	public static Boolean savaUserInfo(String userName,String passWord){
		try{

			//指定输出的到的文件
			String file = "/data/data/com.example.qqlogin/userNameAndPassword.txt";
			FileOutputStream fos = new FileOutputStream(file);

			//写入要读取的内容
			String message = userName+"##"+passWord;
			fos.write(message.getBytes());

			//关闭文件流
			fos.flush();
			fos.close();
			return true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return false;
	}

	public static Map<String, String> getUAndP() {

		try{
		String file = "/data/data/com.example.qqlogin/userNameAndPassword.txt";
		FileInputStream fis = new FileInputStream(file);
		//以字符对象读入
		BufferedReader  reader = new BufferedReader(new InputStreamReader(fis));

		String messages = reader.readLine();
		if(!TextUtils.isEmpty(messages)){
			String[] message = messages.split("##");
			Map<String,String > map = new HashMap<String, String>();
			map.put("name", message[0]);
			map.put("passWord", message[1]);
			return map;
		}

		}catch(Exception e){
			e.printStackTrace();
		}

		return null;
	}

}

这样就OK了!

时间: 2024-10-10 19:22:28

Android数据存储----储存到文件的相关文章

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

Android数据存储(2):Internal Storage

Android数据存储的第二种形式是Internal Storage,即内部存储. 内存存储的特点是存储的是私有数据,其存储位置是在手机内存,一种是普通的文件存储,另一种是文本或图片在内存的缓存. 内部缓存的存放位置/data/data/包名/files 或 /data/data/包名/cache 1.create and write a private file to the internal storage: 步骤: 1)调用 openFileOutput()方法,返回的是一个FileOut

【Android数据存储】- File

个人学习整理,如有不足之处,请不吝指教.转载请注明:@CSU-Max 读写本应用程序数据文件夹中的文件 此种方法读写的文件在/data/data/<应用程序包名>中 android 中提供了 openFileInput(String fileName) 和 openFileOutput(String fileName, int mode) 两个方法来读取本应用程序数据文件夹中的文件和向其写入. openFileInput(String fileName)    打开文件输入流 openFile

Android 数据存储方式分为哪几种?

10道题值得思考 第一道题 1.Android 数据存储方式分为哪几种? SharedPreferences存储数据 2. CotentProvider内容提供者 3. 文件存储 4. 数据库存储(Sqlite) 5.网络存储 2. NDK是什么? 1. 一系列工具类的集合 2. Arm指令集 3. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

Android数据存储之GreenDao 3.0 详解(一)

前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite---->OrmLite---->GreenDao.今天白天一直在忙着公司的项目需求,只能晚上加班来学习最新的GreenDao 3.0使用方式了. GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单.更

Android数据存储-通过SharedPreferences实现记住密码的操作

在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过SharedPreferences实现记住密码的操作 一.首先:介绍下什么是SharedPreferences? SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置. 二.介绍了SharedPreferences,我们将通过记住SharedPrefe

android数据存储_概述

andorid提供了六种方式存储永久的数据,根据需求来使用不同的存储方式,例如是否对于应用程序时私有还是公有,数据存储的空间等. 六个存储方式: 使用SharedPreferences: 这种方式是使用键值对来存储私有的数据 内部存储: 在设备的内存中存储私有数据 外部存储: 在SD卡或其他的外部存储来存储公有数据 SQLite数据库: 在私有的数据库中存储私有的结构花数据 网络存储: 在网络服务中存储数据 私有数据一般情况下不能被访问,但是可以通过content provider来进行对数据的