Android数据存储之IO
Android开发中免不了数据本地的存储,今天我们来说一说怎样利用IO流来进行数据存储。
这里我们通过模拟一个QQ登陆界面的小demo来实际操作IO流。
功能描写叙述:点击button能够保存用户输入的username和password,当点击记住password时。亦能在应用第二次打开时,回显username和password
1.这里布局文件的代码就不贴了,看效果图
2.MainActivity.java
package com.example.viewswitchtest;
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.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.telephony.SmsManager;
import android.util.Log;
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 editAccount;
    private EditText editPwd;
    private Button btnLogin;
    private CheckBox checkbox;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 账号edit
        editAccount = (EditText) findViewById(R.id.edit_account);
        // passwordedit
        editPwd = (EditText) findViewById(R.id.edit_pwd);
        // 登陆button
        btnLogin = (Button) findViewById(R.id.btn_login);
        // 记住账号和passwordcheckbox
        checkbox = (CheckBox) findViewById(R.id.checkbox);
        // 回显账号和password
        readAccountAndPwd();
        btnLogin.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (checkbox.isChecked()) {
                    String account = editAccount.getText().toString();
                    String pwd = editPwd.getText().toString();
                    // android为了防止开发者手写路径easy出现错误,装门提供了两个API
                    // getFilesDir() --> 相应的路径:data/data/项目包名/files
                    // getCacheDir() --> 相应的路径:data/data/项目包名/cache
                    File file = new File(getFilesDir(), "info.txt");
                    try {
                        FileOutputStream fos = new FileOutputStream(file);
                        fos.write((account + "-" + pwd).getBytes()); // 保存格式为"account-password",方便切割
                        fos.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                Toast.makeText(MainActivity.this, "login success", Toast.LENGTH_LONG).show();
            }
        });
    }
    /**
     * 回显username和password
     */
    private void readAccountAndPwd() {
        File file = new File(getFilesDir(), "info.txt");
        if (file.exists()) {
            try {
                FileInputStream fis = new FileInputStream(file);
                BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
                String text = reader.readLine();
                String[] infos = text.split("-");
                // 回显信息
                editAccount.setText(infos[0]);
                editPwd.setText(infos[1]);
                fis.close();
                reader.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
3.输入账号和password,点击登陆button,我们能够在DDMS中的file explore中看到保存的txt格式文件:
4.导出文件,通过文本编辑器打开验证,账号password是否正确:
能够看到账号和password被正确的保存了。且格式正确。
5.关闭应用。再次打开
能够看到,数据能够被正确的回显到输入框中。:-D。。!
Android数据存储之IO的更多相关文章
- 第8章 Android数据存储与IO——File存储
		
openFileOutput/openFileInput 这是android自带的两种解决方案.
 - android学习笔记45——android的数据存储和IO
		
android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...
 - Android - 数据存储 -存储文件
		
Android使用的文件系统和其他平台的基本磁盘的文件系统很相似.这里将要介绍如何使用File API在Android文件系统中读写文件. File对象适合按顺序读写大量的数据.例如,适合图片文件或者 ...
 - 【Android开发日记】之入门篇(七)——Android数据存储(上)
		
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
 - 【Android开发日记】之入门篇(八)——Android数据存储(下)
		
废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...
 - Android数据存储之SQLCipher数据库加密
		
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
 - Android数据存储之GreenDao 3.0 详解
		
前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...
 - Android数据存储方式--SharedPreferences
		
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
 - 数据存储与IO(一)
		
应用程序沙盒简介:iOS应用程序只能在系统为它分配的文件区域内读写文件,这个区域就是此应用程序的沙盒,Application目录下的GUID文件夹就是沙盒,这个文件夹是系统随机命名的.程序所有的非代码 ...
 
随机推荐
- struts2之通配符映射
			
系统有n多个请求时候,不可能以一个action对应一个映射.可以用通配符映射将成百上千请求简化成一个通用映射. 通配符映射规则:1.若找到多个匹配,没有通配符的将胜出. 2.若指定的动作不存在,str ...
 - 【C++】智能指针简述(五):解决循环引用的weak_ptr
			
总结一下前文内容: 1.智能指针通过RAII方法来管理指针:构造对象时,完成资源初始化;析构对象时,对资源进行清理及汕尾. 2.auto_ptr,通过“转移所有权”来防止析构一块内存多次.(如何转移? ...
 - Vue指令7:v-model
			
可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-model 会忽略所有表单元素的 value.checked.selected 特性的初始值. 因为它会选择 Vue 实例数据来作为 ...
 - spring思想分析
			
摘要: EveryBody in the world should learn how to program a computer...because it teaches you how to th ...
 - 10Oracle Database 数据表数据查询
			
Oracle Database 数据表数据查询 DML 数据操纵语言 - 数据的查看和维护 select / insert /delete /update 基本查询语句 Select [distinc ...
 - Linux(Centos7)下搭建SVN服务器(新手上路)
			
以前都是别人直接给地址在svn上,下载或者上传东西,如今要自己建一个版本库用来存放东西.1.安装svnyum install -y subversion 2.查看svn安装位置还有哪些文件rpm -q ...
 - Linux之awk用法
			
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
 - fiddler培训
			
fiddler 在客户端和服务器中间做一个代理 ,只能截获http或HTTPS的请求 代理地址127.0.0.1 端口8888 反向代理,正向代理 浏览器上设置代理地址和端口 左边是session ...
 - fork 系统调用
			
对自己知识储备的感觉就是过于肤浅,很多东西知其名后就不了了之 此系列博客将记录进程分析的学习过程,希望能够多些深度 提到进程,最容易的想到就是fork系统调用,比较好和快速的找到的fork的相关信息就 ...
 - 微信小程序理解8大误区,你中招了吗?
			
2016年年底程序员话题中最火的是什么?莫过于微信小程序!小程序被炒得沸沸扬扬,再次证明一点,微信想让什么火,真的就能让什么火!这种能力真是全中国再也没有人有了,政府也没有.但是,小程序刚刚开始,你对 ...