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的更多相关文章

  1. 第8章 Android数据存储与IO——File存储

    openFileOutput/openFileInput 这是android自带的两种解决方案.

  2. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  3. Android - 数据存储 -存储文件

    Android使用的文件系统和其他平台的基本磁盘的文件系统很相似.这里将要介绍如何使用File API在Android文件系统中读写文件. File对象适合按顺序读写大量的数据.例如,适合图片文件或者 ...

  4. 【Android开发日记】之入门篇(七)——Android数据存储(上)

    在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...

  5. 【Android开发日记】之入门篇(八)——Android数据存储(下)

    废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...

  6. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

  7. Android数据存储之GreenDao 3.0 详解

    前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...

  8. Android数据存储方式--SharedPreferences

    Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...

  9. 数据存储与IO(一)

    应用程序沙盒简介:iOS应用程序只能在系统为它分配的文件区域内读写文件,这个区域就是此应用程序的沙盒,Application目录下的GUID文件夹就是沙盒,这个文件夹是系统随机命名的.程序所有的非代码 ...

随机推荐

  1. Android基础TOP6_1:FrameLyayout和ImageView制作层叠图片

    Activity: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  2. MySQL 帮助类 MySQLHelper

    /// <summary> /// MySqlHelper操作类 /// </summary> public sealed partial class MySQLHelper ...

  3. Pro ASP.NET Core MVC 6th 第三章

    第三章 MVC 模式,项目和约定 在深入了解ASP.NET Core MVC的细节之前,我想确保您熟悉MVC设计模式背后的思路以及将其转换为ASP.NET Core MVC项目的方式. 您可能已经了解 ...

  4. outlook 2016 接收发送无法及时收下邮件,如何更改接收时间?

    1. 单击“文件” > “选项” > “高级” > “发送和接收”,单击”发送/接收“ 2. 组“所有账户”的设置 > 打勾“安排自动发送/接收的时间间隔为(V)” 1 分钟 ...

  5. weex开发前配置

    weex 环境配置:win10 node java git weex-toolkit :npm install weex-toolkit -g在安装weex-toolkit的时候,尽量不要使用cnpm ...

  6. ArcGIS 坐标系 整理

    刚使用ArcGIS的时候,对坐标系的点一直很混乱,今天想要整理整理. 一.地理坐标系与投影坐标系的区分 首先要能区分地理坐标系(GCS)和投影坐标系(PCS). 上面的是地理坐标系的举例,简单理解为不 ...

  7. 计算型属性 vs 懒加载

    只实现 getter 方法的属性被称为计算型属性,等同于 OC 中的 ReadOnly 属性 计算型属性本身不占用内存空间 不可以给计算型属性设置数值 计算型属性可以使用以下代码简写 var titl ...

  8. JMeter在linux上分布式压测环境配置(一)

    环境配置 一.在Linux服务器先安装SDK 1.先从官网下载jdk1.8.0_131.tar.gz,l(linux版本,32位,64位根据系统来判断) 2.在/usr/目录下创建java文件夹,(当 ...

  9. CAD设置背景图片

    把图片作为背景图片可见但是不能编辑操作. 主要用到函数说明: _DMxDrawX::DrawImageToBackground 绘光栅图到背景.详细说明如下: 参数 说明 BSTR sFileName ...

  10. centOS目录结构介绍

    Linux / CentOS目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin:/usr/bin: ...