Android开发之初级开发_保存数据之文件保存

在很多地方都会用到将用户的数据保存到SDcard中去。

今天介绍Android的第一种保存方式,File保存

 

布局文件:activity_main.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:orientation="vertical" >

    <EditText
        android:id="@+id/user_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入姓名..." />

    <EditText
        android:id="@+id/user_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:hint="请输入密码..." />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <CheckBox
            android:id="@+id/checked"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="记住密码" />

        <Button
            android:id="@+id/landing"
            android:layout_alignParentRight="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登陆"/>

    </RelativeLayout>


</LinearLayout>

布局文件二:second.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:orientation="vertical" >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登陆成功..."
        android:textSize="20sp"
        android:layout_marginTop="100dp"
        android:gravity="center_vertical|center_horizontal"
        />
</LinearLayout>

Mainactivity.java

import java.util.Map;

import com.hql.savedatato.R;
import com.hql.savedatatosdcard.loginservice.LoginService;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
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 user_name, user_password;
    private CheckBox checked;
    private Button btn_loading;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user_name = (EditText) findViewById(R.id.user_name);
        user_password = (EditText) findViewById(R.id.user_password);
        checked = (CheckBox) findViewById(R.id.checked);
        btn_loading = (Button) findViewById(R.id.landing);
        btn_loading.setOnClickListener(new MyListener());
        Map<String, String> map = LoginService.getuserinfo(MainActivity.this);
        if (map != null)
        {
            user_name.setText(map.get("username"));

            user_password.setText(map.get("password"));
        }
        if (map == null)
        {
            Toast.makeText(this, "map为空", Toast.LENGTH_SHORT).show();
        }
    }

    private class MyListener implements OnClickListener
    {

        @Override
        public void onClick(View v)
        {
            String name = user_name.getText().toString().trim();
            String password = user_password.getText().toString().trim();
            if (TextUtils.isEmpty(name) || TextUtils.isEmpty(password))
            {
                Toast.makeText(MainActivity.this, "请核对你的登陆信息...", Toast.LENGTH_SHORT).show();
            }
            if (checked.isChecked())
            {
                boolean result = LoginService.saveInfo(MainActivity.this, name, password);
                if (result)
                {
                    Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
                } else
                {
                    Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
                }
                if (name.equals("loneliness") || password.equals("123456789"))
                {
                    Intent intent = new Intent();
                    intent.setClass(MainActivity.this, Second.class);
                    startActivity(intent);
                }
            }
        }

    }
}

Second.java

import com.hql.savedatato.R;

import android.app.Activity;
import android.os.Bundle;

public class Second extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
    }
}

 

LoginService.java

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

import android.content.Context;

public class LoginService
{
    /**
     * 使用File保存用户的账号和密码
     * 
     * @param username
     *            账号
     * @param passwrod
     *            密码
     * @return
     */

    public static boolean saveInfo(Context context, String username, String passwrod)
    {
        try
        {
            File file = new File("/storage/sdcard0/info.txt");
            FileOutputStream fos = new FileOutputStream(file);
            fos.write((username + "##" + passwrod).getBytes());
            fos.close();
            return true;
        } catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 获取保存到SDcard中的数据
     * 
     * @param context
     * @return
     */
    public static Map<String, String> getuserinfo(Context context)
    {
        File file = new File("/storage/sdcard0/info.txt");
        try
        {

            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]);
            br.close();
            return map;
        }

        catch (Exception e)
        {

            e.printStackTrace();
            return null;
        }
    }

}

 

添加读写SD卡权限:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

注意: fos.write((username+"**"+passwrod).getBytes());中“**”是为了将账号和密码区别开

posted @ 2014-05-06 15:00  loneliness__白色  阅读(171)  评论(0)    收藏  举报