数据的储存是一个十分重要的功能,它涉及到各种类型的数据,各种的储存方式,今天就接触了Android中数据储存的简单应用,有一种方式是可以将存入的数据原封不动的存储起来,这里要用到openfileoutput方法这是一个contextWrapper类的一个方法

这个方法可以理解为创建一个新文件用于存储你写入的数据,传入的name字符串是文件名,mode有两个MODE_PRIVATE和MODE_ADDEND,区别是一个会覆盖同名内容,一个会在原文件中直接添加。如果文件名不存在两种模式都会直接创建新文件。接着就是Java中的流相关的运用,将数据写入刚创建的文件中。

第二种方法是像一个表格一样去储存数据,一个键值对应一个数据,这就是 SharePreference  类,可以通过 activity.getSharePreferences、PreferenceManager.getDefaultSharedPreference、context.getPrefences三种方法 来得到实例,得到实例后用edit方法获取sharepreferences.editor对象,sharepreferences.editor有一系列的put方法。例如putint等等,传入键值和数据即可,注意要在最后调用edit.apply方法提交数据。而sharepreferences类有许多get方法例如getint,与sharepreferences.editor方法中的put方法相对应

package com.example.administrator.sharepreferencetest;

import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button saveData=(Button)findViewById(R.id.save_data);
saveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.apply();
}
});
Button restoreData=(Button)findViewById(R.id.restore_data);
restoreData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences pref=getSharedPreferences("data",MODE_PRIVATE);
String name=pref.getString("name","");
int age=pref.getInt("age",0);
boolean married=pref.getBoolean("married",false);
Log.d("mainactivity","name is "+name);
Log.d("mainactivity","age is "+age);
Log.d("mainactivity","married is "+married);
}
});
}
}

mainactivity.java代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:text="Save data"
android:id="@+id/save_data"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="Restore data"
android:id="@+id/restore_data"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

配置文件

这样就可以存储,然后再读取出来。

但是有一个问题值得我们注意就是,存储的文件在哪里呢?在Android device monitor下的filer explorer中的/data/data/包名/项目名/shared_prefs文件下有一个 存储文件名.xml文件这就是我们存储的地方了,但是这里面有很多的问题,其一是新版的Android studio的下拉目录中没有Android device monitor了,必须到Android studio的sdk下的tools文件下例如C:\Users\Administrator\AppData\Local\Android\Sdk\tools找monitor应用程序,问题二是找到了monitor应用打开之后file explorer下的data文件打不开导出之后什么也没有,但是程序中明明可以读取存进的数据为什么在这里却没有数据呢?那这就是权限的问题了,推荐的解决方法 https://www.cnblogs.com/zhujiabin/p/6124486.html。但是还有问题三,在模拟器条件下就算是权限问题解决了,但还是不能打开data文件,原来这好像是只支持真机模拟不支持手机模拟器。注意到所有的问题后你就能随意的存储,读出,并随时查看文件了。

Android中的数据储存的更多相关文章

  1. Android中的数据存储

    Android中的数据存储主要分为三种基本方法: 1.利用shared preferences存储一些轻量级的键值对数据. 2.传统文件系统. 3.利用SQLite的数据库管理系统. 对SharedP ...

  2. 67.Android中的数据存储总结

    转载:http://mp.weixin.qq.com/s?__biz=MzIzMjE1Njg4Mw==&mid=2650117688&idx=1&sn=d6c73f9f04d0 ...

  3. Android中的数据持久化机制

    Android中几种最简单但是却最通用的数据持久化技术:SharedPreference.实例状态Bundle和本地文件. Android的非确定性Activity和应用程序生存期使在会话间保留UI状 ...

  4. Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏

    文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...

  5. Android笔记:数据储存

    1.文件存储 文件存储是Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据. ...

  6. Android下的数据储存方式(三)

      Android下最好的数据储存方式:关系型数据库sqlite.   数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...

  7. Android下的数据储存方式( 二)

    在上一篇文章中我们介绍了SharedPreferences的使用方法. 今天我们继续介绍另一种储存数据的方式:使用内部储存和外部储存 每一个Android设备都拥有两个数据储存区域:外部储存和外部储存 ...

  8. Android下的数据储存方式

      安卓系统默认提供了一下几种数据储存的方式: Shared Preferences 内部储存 外部储存 SQLite数据库 保存到网络服务器   使用Shared Preferences       ...

  9. Android 里的数据储存

    数据持久化 关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化, ...

随机推荐

  1. 学习ActiveMQ(一):安装与启动

    一:简单介绍 AvtiveMQ是Apaceh所研发的一个开源消息中间件,用来在服务与服务之间进行异步通信,是基于JMS规范的.activemq包含发送者(sender).消息(message).队列( ...

  2. Python-第一章(开发基础)

    1.    机器语言 = 机器指令 = 二进制代码 汇编语言就是把二进制变成了英文,开发效率低. 编译型语言:C   C++   Delphi  ... 解译型语言:Python  php   jav ...

  3. Delphi 的内存操作函数(2): 给数组指针分配内存

    静态数组, 在声明时就分配好内存了, 譬如: var   arr1: ..] of Char;   arr2: ..] of Integer; begin   ShowMessageFmt('数组大小 ...

  4. 如何让模拟的json数据接口能够正常的在手机上有效果

    1. 确保手机与PC在同一个ip网下 这里我是通过------------360随身WIFI,20块钱淘宝上卖的,外观像U盘一样的,直接插在电脑的USB上就能在PC上创建一个WiFi,手机连接上就可以 ...

  5. vim模式下报错E37: No write since last change (add ! to override)

    故障现象: 使用vim修改文件报错,系统提示如下: E37: No write since last change (add ! to override) 故障原因: 文件为只读文件,无法修改. 解决 ...

  6. less命令查看文件时的常用操作

    下键或者回车:往下一行 D:往下半页 空格和f:往下一页 上键:往上一行 B:往上一页 shift+G:直接切到末尾 ?+搜索条件:从下往上搜索 /+搜索条件:从上往下搜索

  7. 三目运算符与Scanner类

    1.三目运算符(条件运算符)格式:X ? Y : ZX表达式必须是boolean类型 的表达式执行流程:首先计算X表达式的结果,如果X的结果为true,那么整个表达式的结果就是Y的值如果X的结果为tr ...

  8. pytorch中tensorboardX的用法

    在代码中改好存储Log的路径 命令行中输入 tensorboard --logdir /home/huihua/NewDisk1/PycharmProjects/pytorch-deeplab-xce ...

  9. SetFileAttributes 设置属性

    #include <Windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTA ...

  10. 转:select2 使用教程(简)

    用了这么久的Select2插件,也该写篇文章总结总结.当初感觉Select2不是特别好用,但又找不到比它更好的下拉框插件. 在我的印象里Select2有2个版本,最新版本有一些新的特性,并且更新了一下 ...