欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android开发文件存储实例

程序员文章站 2022-03-02 20:53:08
android的文件存储,有i/o流的方式存储,与java一样,还有一种android自己的sharepreferences存储方法。下面看一个例子:用i/o流的方式存储方法和shareprefere...

android的文件存储,有i/o流的方式存储,与java一样,还有一种android自己的sharepreferences存储方法。

下面看一个例子:

用i/o流的方式存储方法和sharepreferences存储方法,存放qq账号和密码,再次进入页面时,把存储在文件中的账号密码显示在上面。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#e6e6e6"
    android:orientation="vertical">

    <imageview
        android:id="@+id/iv"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_centerhorizontal="true"
        android:layout_margintop="40dp"
        android:src="@drawable/head"
        />
    <linearlayout
        android:id="@+id/ll_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/iv"
        android:layout_centervertical="true"
        android:layout_marginbottom="5dp"
        android:layout_marginleft="10dp"
        android:layout_marginright="10dp"
        android:layout_margintop="15dp"
        android:background="#ffffff">

        <textview
            android:id="@+id/tv_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="账号"
            android:textcolor="#000"
            android:textsize="20sp"/>
        <edittext
            android:id="@+id/et_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginleft="5dp"
            android:background="@null"
            android:padding="10dp"/>
    </linearlayout>

    <linearlayout
        android:id="@+id/ll_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/ll_number"
        android:layout_centervertical="true"
        android:layout_marginleft="10dp"
        android:layout_marginright="10dp"
        android:background="#ffffff">

        <textview
            android:id="@+id/tv_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="密码"
            android:textcolor="#000"
            android:textsize="20sp"/>
        <edittext
            android:id="@+id/et_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginleft="5dp"
            android:background="@null"
            android:inputtype="textpassword"
            android:padding="10dp"/>
    </linearlayout>

    <button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/ll_password"
        android:layout_marginleft="10dp"
        android:layout_marginright="10dp"
        android:layout_margintop="50dp"
        android:background="#3c8dc4"
        android:text="登录"
        android:textcolor="#ffffff"
        android:textsize="20sp"
        />
</relativelayout>

mainactivity.java

package com.example.saveqq;

import androidx.appcompat.app.appcompatactivity;

import android.os.bundle;
import android.text.textutils;
import android.view.view;
import android.widget.button;
import android.widget.edittext;
import android.widget.toast;

import java.util.map;

public class mainactivity extends appcompatactivity implements view.onclicklistener {

    private edittext user;
    private edittext password;
    private button button;
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        //1.初始化view
        initview();

        //2.若用户保存了信息,进行数据回写
        //i/o流方法
        map<string,string> userinfo = filesaveqq.getuserinfo(this);
        
        //sharedpreferences的方法
/*        map<string,string> userinfo = spsaveqq.getuserinfo(this);*/
            if ((userinfo!=null)){
                user.settext(userinfo.get("user"));
                password.settext(userinfo.get("password"));
            }
    }

    private void initview() {
        //控件的初始化
        user = (edittext)findviewbyid(r.id.et_number);
        password = (edittext)findviewbyid(r.id.et_password);
        button = (button) findviewbyid(r.id.btn_login);
        //2.设置按钮点击事件
        button.setonclicklistener(this);
    }

    @override
    public void onclick(view v) {
        //1.点击获取账号密码
        string  s_user = user.gettext().tostring().trim();
        string  s_password = password.gettext().tostring().trim();
        //2.检查用户名和密码是否为空
        if (textutils.isempty(s_user)){
            toast.maketext(this,"请输入qq账号",toast.length_long).show();
            return;
        }
        if (textutils.isempty(s_password)){
            toast.maketext(this,"请输入qq密码",toast.length_long).show();
            return;
        }
        toast.maketext(this,"登陆成功",toast.length_long).show();

        //3.保存用户信息
        //i/o流的方法
        boolean issavesuccess = filesaveqq.saveuserinfo(this,s_user,s_password);
        //用sharedpreferences的方法
/*        boolean issavesuccess = spsaveqq.saveuserinfo(this,s_user,s_password);*/
        if (issavesuccess){
            toast.maketext(this,"保存成功",toast.length_long).show();
        }else{
            toast.maketext(this,"保存失败",toast.length_long).show();
        }
    }
}

用i/o流方法

filesaveqq.java

package com.example.saveqq;

import android.content.context;


import java.io.fileinputstream;
import java.io.filenotfoundexception;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.util.hashmap;
import java.util.map;

public class filesaveqq {
    //保存qq账号和密码到data.txt
    public static  boolean saveuserinfo(context context,string user,string password){
        try {
            //1.通过上下文获取文件输出流
            fileoutputstream fos = context.openfileoutput("data.txt",context.mode_append);
            //2.把数据写到文件中
            fos.write((user+":"+password).getbytes());
            fos.close();
            return true;
        } catch (ioexception e) {
            e.printstacktrace();
            return false;
        }
    }

    public static map<string,string> getuserinfo(context context){
        string content = "";
        try {
            fileinputstream fis = context.openfileinput("data,txt");
            byte[]  buffer = new byte[fis.available()];
            fis.read(buffer);
            map<string,string> usermap = new hashmap<string, string>();
            content = new string(buffer);
            string[] infos = content.split(":");
            usermap.put("user",infos[0]);
            usermap.put("password",infos[1]);
            fis.close();
            return usermap;
        } catch (ioexception e ) {
            return  null;
        }


    }
}

用sharedpreferences的方法

spsaveqq.java

package com.example.saveqq;

import android.annotation.suppresslint;
import android.content.context;
import android.content.sharedpreferences;

import java.util.hashmap;
import java.util.map;

//保存qq账号和密码到data.xml中
public class spsaveqq {
    public static boolean saveuserinfo(context context,string username,string password){
        sharedpreferences sp = context.getsharedpreferences("data",context.mode_private);
        sharedpreferences.editor editor = sp.edit();
        editor.putstring("username",username);
        editor.putstring("password",password);
        editor.commit();
        return true;
    }

    //从data.xml文件中获取存储的qq账号和密码
    public static map<string,string> getuserinfo(context context){
        sharedpreferences sp = context.getsharedpreferences("data",context.mode_private);
        string username = sp.getstring("username","");
        string password = sp.getstring("password","");
        map<string,string> usermap = new hashmap<>();
        usermap.put("username",username);
        usermap.put("password",password);
        return  usermap;
    }
}

运行截图:

Android开发文件存储实例

Android开发文件存储实例

重新进入页面:

Android开发文件存储实例

完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。