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; } }
运行截图:
重新进入页面:
完成。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。