文档章节

简单文件存储进内存

mutouzhang
 mutouzhang
发布于 2014/03/24 21:39
字数 546
阅读 18
收藏 0

xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    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=".MainActivity" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="输入用户名" />
    <EditText 
        android:id="@+id/username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        
        />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="输入密码" />
    <EditText 
        android:id="@+id/pwd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        
        <CheckBox 
            android:id="@+id/checkBox"
            android:checked="true"
            android:text="记住密码"
             android:layout_width="wrap_content"
        android:layout_height="wrap_content"
            />
        <Button 
            android:id="@+id/button"
             android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录"
        android:layout_alignParentRight="true"
        
            />
    </RelativeLayout>

</LinearLayout>

MainActivity

package com.example.savedatetomemory;

import java.util.Map;

import com.example.savedatetomemory.util.SaveAndReadService;

import android.os.Bundle;
import android.app.Activity;
import android.text.TextUtils;
import android.view.Menu;
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
{
	private EditText etname, etpwd;
	private Button button;
	private CheckBox checkBox;

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

		etname = (EditText) findViewById(R.id.username);
		etpwd = (EditText) findViewById(R.id.pwd);
		button = (Button) findViewById(R.id.button);
		checkBox = (CheckBox) findViewById(R.id.checkBox);
		
		//检查是否有保存的用户名 密码 有的话回显
		Map<String, String> map = SaveAndReadService.getSavedUserInfo(this);
		if (map != null)
		{
			etname.setText(map.get("username"));
			 etpwd.setText(map.get("password"));
			 
		}
		
		
		

		button.setOnClickListener(new OnClickListener()
		{

			@Override
			public void onClick(View v)
			{
				String username = etname.getText().toString().trim();
				String password = etpwd.getText().toString().trim();

				if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
				{
					Toast.makeText(MainActivity.this, "用户名密码不能为空",
							Toast.LENGTH_SHORT).show();
				} else
				{
					if (checkBox.isChecked())
					{
						// 保存用户名密码
						boolean result = SaveAndReadService.saveUserInfo(MainActivity.this,username,password);
						if (result)
						{
							Toast.makeText(MainActivity.this, "保存文件成功 ",
									Toast.LENGTH_SHORT).show();
						}
					}
					// 登录
				}

			}
		});

	}

}

util

package com.example.savedatetomemory.util;

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 java.util.HashMap;
import java.util.Map;

import android.content.Context;

/**
 * 
 * 保存文件的工具类 
 * 如果方法有返回值,可以把它捕获 有异常就返回情况 如果没有返回值 调用的话出了异常必须知道 就抛出
 * true 保存成功 false 失败
 */
public class SaveAndReadService
{

	public static boolean saveUserInfo(Context context,String username,String password){
		//保存路径 
		try
		{
			//File file = new File("/data/data/com.example.savedatetomemory/info.txt");
			//context.getFilesDir();//好处 不怕改包名返回一个目录 /data/data/包名/files/
			
			File file = new File(context.getFilesDir(), "info.txt");
//			File file = new File(context.getCacheDir(), "info.txt");//保存进缓存目录
			
			FileOutputStream fos = new FileOutputStream(file);
			
			fos.write((username+"##"+password).getBytes());
			fos.close();
			
			return true;
		} catch (Exception e)
		{
			e.printStackTrace();
			return false;//保存失败
		}
		
	}
	/**
	 * 获取保存的数据 
	 */
	public static Map<String, String> getSavedUserInfo(Context context)
	{
		try
		{
			File file = new File(context.getFilesDir(), "info.txt");
			FileInputStream fis = new FileInputStream(file);
			
			BufferedReader br = new BufferedReader(new InputStreamReader(fis));
			String str = br.readLine();
			
			String[] infos = str.split("##");
			Map<String, String> map = new HashMap<String, String>();
			
			map.put("username", infos[0]);
			map.put("password", infos[1]);
			
			return map;
			 
		} catch (Exception e)
		{
			e.printStackTrace();
			return null;
		}
	}
	
}


© 著作权归作者所有

上一篇: 存储文件私有
下一篇: radioButton空指针
mutouzhang
粉丝 6
博文 190
码字总数 91235
作品 0
洛阳
程序员
私信 提问
面向对象开发设计

1、创建并使用对象的格式 static 区分共享与私有 1、创建对象的语法 ---- 注意:对象也是一个变量(引用类型) 类名 对象名 = new 类名(); 2、调用对象的属性 对象名.变量名 3、调用对象的...

scalpel-21
2016/05/13
38
0
面试宝典系列-redis和memcached的区别

1、网络IO模型 Memcached是多线程(多核),非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, 网...

suyain
2018/07/25
0
0
MongoDB存储数据

想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files。 Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的。 内存映射文件是OS通过mmap在内...

野渡书生
2016/03/11
21
0
azure存储压测的问题(农码主观意识太强被坑了)

由于公司想把部份业务迁到windowsazure,主要是应用winodwsazure的存储;在方案中为了体现存储的可靠性所以对winodwsazure存储进行了一系列的测试.但在读取压力测试环节中发现间歇性出现文件读...

泥水佬
2014/09/16
0
0
ls命令、myshell程序编写总结

一、ls命令实现总结 本程序要实现的功能是ls命令和ls命令-a(列出所有的文件)、-l(列出文件的详细信息)、-c(按照文件的ctime排序)、-g(输出除所有者外的所有信息)、-U(不排序输出文件)、-R(递...

Jung_zhang
2015/07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Disable Autostart of MySQL Server on Ubuntu

OSC Markdown Editer 真香,笔记一篇,懒得转中文,如有表述问题,请不吝指出,先谢为敬! OS: Ubuntu 19.04 When the MySQL server is installed, it automatically started with the OS. I...

Iridium
13分钟前
0
0
OpenStack RDO + S3

Packstack(RDO) installation "sync db timeout" issue version: openstack-packstack-13.0.0-0.1.0rc1.el7.noarchopenstack-packstack-puppet-13.0.0-0.1.0rc1.el7.noarch add timeout =>......

Firxiao
16分钟前
0
0
java运算符的优先级

https://www.cnblogs.com/zjfjava/p/5996666.html

南桥北木
21分钟前
0
0
线性代数的静态观-向量空间(一)

向量是一个具有大小和方向的量,因此只要大小与方向相同则向量也相同,从而向量可以自由平行移动。 向量与点不同,它反映的是从A到B的位移(既包含位移的方向又包含位移的大小),而点仅仅是...

FAT_mt
22分钟前
0
0
Redis缓存穿透、缓存雪崩和缓存击穿

Redis缓存穿透、缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效。 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中...

architect刘源源
43分钟前
10
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部