Android上最基本的存储数据的方式即为使用文件存储数据,使用基本的Java的FileOutStream,BufferedWriter,FileInputStream和BufferedReader即可。

MainActivity.java

  1. package org.elvalad.filepersistencetest;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.os.Bundle;
  6. import android.text.TextUtils;
  7. import android.view.Menu;
  8. import android.view.MenuItem;
  9. import android.widget.EditText;
  10. import android.widget.Toast;
  11.  
  12. import java.io.BufferedReader;
  13. import java.io.BufferedWriter;
  14. import java.io.FileInputStream;
  15. import java.io.FileOutputStream;
  16. import java.io.IOException;
  17. import java.io.InputStreamReader;
  18. import java.io.OutputStreamWriter;
  19.  
  20. public class MainActivity extends Activity {
  21. private EditText edit;
  22.  
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. edit = (EditText) findViewById(R.id.edit);
  28. String inputText = load();
  29. if (!TextUtils.isEmpty(inputText)) {
  30. edit.setText(inputText);
  31. edit.setSelection(inputText.length());
  32. Toast.makeText(MainActivity.this, "Restoring successed", Toast.LENGTH_SHORT).show();
  33. }
  34. }
  35.  
  36. @Override
  37. protected void onDestroy() {
  38. super.onDestroy();
  39. String inputText = edit.getText().toString();
  40. save(inputText);
  41. }
  42.  
  43. public void save(String inputText) {
  44. FileOutputStream out = null;
  45. BufferedWriter writer = null;
  46. try {
  47. out = openFileOutput("data", Context.MODE_APPEND);
  48. writer = new BufferedWriter(new OutputStreamWriter(out));
  49. writer.write(inputText);
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. } finally {
  53. try {
  54. if (writer != null) {
  55. writer.close();
  56. }
  57. } catch (IOException e) {
  58. e.printStackTrace();
  59. }
  60. }
  61. }
  62.  
  63. public String load() {
  64. FileInputStream in = null;
  65. BufferedReader reader = null;
  66. StringBuilder content = new StringBuilder();
  67. try {
  68. in = openFileInput("data");
  69. reader = new BufferedReader(new InputStreamReader(in));
  70. String line = "";
  71. while ((line = reader.readLine()) != null) {
  72. content.append(line);
  73. }
  74. } catch (IOException e) {
  75. e.printStackTrace();
  76. } finally {
  77. if (reader != null) {
  78. try {
  79. reader.close();
  80. } catch (IOException e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. }
  85. return content.toString();
  86. }
  87.  
  88. @Override
  89. public boolean onCreateOptionsMenu(Menu menu) {
  90. // Inflate the menu; this adds items to the action bar if it is present.
  91. getMenuInflater().inflate(R.menu.menu_main, menu);
  92. return true;
  93. }
  94.  
  95. @Override
  96. public boolean onOptionsItemSelected(MenuItem item) {
  97. // Handle action bar item clicks here. The action bar will
  98. // automatically handle clicks on the Home/Up button, so long
  99. // as you specify a parent activity in AndroidManifest.xml.
  100. int id = item.getItemId();
  101.  
  102. //noinspection SimplifiableIfStatement
  103. if (id == R.id.action_settings) {
  104. return true;
  105. }
  106.  
  107. return super.onOptionsItemSelected(item);
  108. }
  109. }

activity_main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingLeft="@dimen/activity_horizontal_margin"
  6. android:paddingRight="@dimen/activity_horizontal_margin"
  7. android:paddingTop="@dimen/activity_vertical_margin"
  8. android:paddingBottom="@dimen/activity_vertical_margin"
  9. android:orientation="horizontal"
  10. tools:context=".MainActivity">
  11.  
  12. <EditText
  13. android:id="@+id/edit"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:hint="Type something here"/>
  17.  
  18. </LinearLayout>

Android使用文件存储数据的更多相关文章

  1. Android之SharedPreference存储数据

    *路径: /data/data/包名/shared_prefs/ * 以Xml文件存储数据 * 编写步骤 // 1. 获取sp SharedPreferences sp = this.getShare ...

  2. Android开发手记(17) 数据存储二 文件存储数据

    Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 本文主要介绍如何使用文件来存储 ...

  3. [ Android 五种数据存储方式之二 ] —— 文件存储数据

    关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 文件可用来存放大量数据,如文本.图片.音 ...

  4. android开发之存储数据

    android数据存储之SharedPreferences 一:SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配 ...

  5. Android使用SharedPreference存储数据

    SharedPreference存储数据和文件存储更加方便的一点是可以按照一定的数据类型进行存储,同时取数据时也能够获取到相应的数据类型.它是按照map的方式来存储和读取数据的. MainActivi ...

  6. Android四个存储数据的SharedPreferences

    除了SQLite外部数据库.SharedPreferences它是一个轻量级的数据存储,其本质是基于XML文件存储key-value键值数据,通过定期用它来存储一些简单的配置信息.它的存储位置/dat ...

  7. Android学习——文件存储

    在Andriod开发中,文件存储和Java的文件存储类似.但需要注意的是,为了防止产生碎片垃圾,在创建文件时,要尽量使用系统给出的函数进行创建,这样当APP被卸载后,系统可以将这些文件统一删除掉.获取 ...

  8. Android File文件存储功能

    1.介绍 2.使用方法 3.文件存储位置 4.java后台代码 package com.lucky.test47file; import android.support.v7.app.AppCompa ...

  9. 【Android】SharedPreference存储数据

    SharedPreference存储数据 使用SharedPreference保存数据  putString(key,value) 使用SharedPreference读取数据  getString( ...

随机推荐

  1. [课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化)

    [课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...

  2. ReactJs入门教程

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...

  3. 从yum源下载安装包及依赖包

    局域网内所有linux都用yum从外网源安装软件有点浪费,尤其遇到下载慢的情况: 所以考虑下载后传到其他机器安装,还可以保证版本一致(创建一个本地仓库更好,这个后面研究了再记录): 首先安装yum工具 ...

  4. ATI Radeon HD 5450 with full QE/CI Support ( 转载 )

    ATI Radeon HD 5450 with full QE/CI Support - DSDT (Contains HDMI Audio Edit Too) & AGPM included ...

  5. XML学习笔记(三) -- Schema

    标签(空格分隔): 学习笔记 Schema的格式 XML Schema文档是由元素.属性.命名空间和XML文档中的其他节点构成的. XML Schema有两种重要的Schema模型:Microsoft ...

  6. php 面向对象中的魔术方法

    1.__construct() 实例化对象是被自动调用.当__construct和以类名为函数名的函数 同时存在时调用__construct,另一个不背调用. 类名为函数名的函数为老版的构造函数. 2 ...

  7. Java开发中经典的小实例-(字符串比较)

    //输入字符串然后与自己定义的数组进行对比,并输出重复次数. public class Test11 {    public static void main(String[] args) {     ...

  8. parseInt的源码阅读

    parseInt的源码阅读 Integer.parseInt()这个方法的功能小巧又实用,实现起来困难不大,没有很复杂.这里就来看一下Java的源码是怎么写的吧,走一边大婶写过的代码,应该会有点收获吧 ...

  9. Sprint(第三天11.16)

    Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:点餐系统 4.团队博客地址:http://www.cnblogs.com/iamCarson/ 团 ...

  10. Flex http请求

    下面类支持POST和GET请求,请求数据和出错将返回 package com.sole.util { import flash.events.Event; import flash.events.HT ...