android 存储结构与存储方法
来源:互联网 发布:淘宝卖衣服从哪进货 编辑:程序博客网 时间:2024/05/23 11:47
1. android的存储方式主要分为:1)本地的文本存储;2)数据库存储
存储方法:1)SharedPreference 存储:适用于简单的数据保存例如属性文件
2)文件存储数据:常用方式,可保存较大数据,可存储在系统或者SD卡中
3)SQLite数据库存储:以数据库形式存储数据
4)ContentProvider存储数据:为存储和获取提供统一接口,主要用于程序间数据共享
5)网络存储:通过网络来存储获取数据,主要应用在网络相关的应用中
2. 文件结构
1)系统文件:主要存储在\system文件夹下,子文件夹有,app,bin,etc,media等。更改读取等操作需要roots权限
2)数据文件:主要存储在\data文件夹下,子文件夹有,app,backup,data等,主要存储着应用程序以及应用中产生的临时数据等信息。data文件夹下的没有权限的程序不能相互访问数据,保护私有数据
3)外部存储:对于较大的文件一般会存储在SD卡等外部存储中。只要有访问SD卡权限就能够访问其中所有文件,数据安全性较低
3. 5种测试方法的实例
1)SharedPreference 存储:以一个登陆界面来演示
如下是.xml 和.java 文件代码
程序中将用户名user 和密码 pass 通过SharedPreference 存储,当再次打开应用时,由initView();方法把上次的配置信息直接显示在界面上
通过SharedPreferences userinfo = getSharedPreferences("user_info",0);获得SharedPreferences对象
通过userinfo.edit().putString("name",user.getText().toString()).commit();存储数据,利用对象的edit接口的putString方法保存,最终的提交是通过commit()来完成的
在initView();中可以看到,获取数据是通过SharedPreferences对象userinfo的getString方法实现的。
点击(此处)折叠或打开
- package com.example.warrior.sharedpreferencetest;
- import android.app.Activity;
- import android.content.SharedPreferences;
- import android.support.v7.app.ActionBarActivity;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.ImageButton;
- public class MainActivityextends Activity{
- private EditText user = null;
- private EditText password = null;
- private ImageButton loginBtn = null;
- @Override
- protected void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- user = (EditText)findViewById(R.id.user);
- password = (EditText)findViewById(R.id.pass);
- loginBtn = (ImageButton)findViewById(R.id.loginButton);
- initView();
- loginBtn.setOnTouchListener(newView.OnTouchListener(){
- @Override
- public boolean onTouch(View v, MotionEventevent) {
- if(event.getAction()==MotionEvent.ACTION_DOWN){
- v.setBackgroundResource(R.drawable.b2);
- SharedPreferences userinfo = getSharedPreferences("user_info",0);
- userinfo.edit().putString("name",user.getText().toString()).commit();
- userinfo.edit().putString("pass",password.getText().toString()).commit();
- }
- else if(event.getAction()==MotionEvent.ACTION_UP){
- v.setBackgroundResource(R.drawable.b3);
- }
- return false;
- }
- });
- }
- private void initView(){
- SharedPreferences userInfo = getSharedPreferences("user_info",0);
- String username = userInfo.getString("name","");
- String pass = userInfo.getString("pass","");
- user.setText(username);
- password.setText(pass);
- }
- @Override
- public boolean onCreateOptionsMenu(Menumenu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_main,menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItemitem) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id= item.getItemId();
- //noinspection SimplifiableIfStatement
- if (id== R.id.action_settings){
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
点击(此处)折叠或打开
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:orientation="vertical"
- android:background="@drawable/b1"
- tools:context=".MainActivity">
- <EditText
- android:layout_width="185dp"
- android:layout_height="40dp"
- android:id="@+id/user"
- android:hint="enter your name"
- android:singleLine="true"
- android:layout_alignParentTop="true"
- android:layout_alignLeft="@+id/pass"
- android:layout_marginTop="66dp"
- />
- <EditText
- android:layout_width="185dp"
- android:layout_height="40dp"
- android:id="@+id/pass"
- android:hint="enter your password"
- android:singleLine="true"
- android:layout_below="@+id/user"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="44dp"
- android:inputType="textPassword"
- />
- <ImageButton
- android:layout_width="100dp"
- android:layout_height="60dp"
- android:id="@+id/loginButton"
- android:background="@drawable/ibtn"
- android:layout_centerVertical="true"
- android:layout_alignRight="@+id/pass"
- android:layout_marginRight="20dp"
- />
- </RelativeLayout>
写操作-》通过FileOutputStream fWriteStream = openFileOutput(filename,MODE_APPEND);声称文件写入对象,通过fWriteStream.write(buffer);方法写入,然后关闭fWriteStream.close();
读操作-》通过FileInputStream fInputStream = openFileInput(filename);创建读操作对象,通过fInputStream.read(buffer);方法读取内容,然后fInputStream.close();关闭。
代码如下
.xml
点击(此处)折叠或打开
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin"
- tools:context=".MainActivity">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/text"
- />
- </RelativeLayout>
点击(此处)折叠或打开
- package com.example.warrior.filestreamtest;
- import android.app.Activity;
- import android.support.v7.app.ActionBarActivity;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.widget.TextView;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- public class MainActivityextends Activity{
- @Override
- protected void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- String fileName = "fileStreamText.txt";
- String fileContent = "welcome to android!!" +"\n\r"+
- "I love it!!";
- String result = "";
- boolean istrue = writeFile(fileName,fileContent);
- if(istrue){
- result += fileName+"create success!!\n\r";
- }else{
- result+= fileName+"create failure!!\n\r";
- }
- result += readFile(fileName);
- TextView textView = (TextView)findViewById(R.id.text);
- textView.setText(result);
- }
- /*write content to new file
- *param filename: name of new file
- * param content:the content to be writen into the file
- * return boolean:true/success write into false/failure write into
- */
- public boolean writeFile(String filename,String content){
- try {
- FileOutputStream fWriteStream = openFileOutput(filename,MODE_APPEND);
- byte[]buffer = content.getBytes();
- fWriteStream.write(buffer);
- fWriteStream.flush();
- fWriteStream.close();
- return true;
- }catch(Exception e){
- e.printStackTrace();
- return false;
- }
- }
- /*read content from file
- *param filename:filename
- * return String
- */
- public String readFile(String filename){
- String readBuffer = "";
- try {
- FileInputStream fInputStream = openFileInput(filename);
- int len = fInputStream.available();
- byte[]buffer = new byte[len];
- fInputStream.read(buffer);
- fInputStream.close();
- readBuffer = new String(buffer);
- }catch(Exception e){
- e.printStackTrace();
- }
- return readBuffer;
- }
- @Override
- public boolean onCreateOptionsMenu(Menumenu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_main,menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItemitem) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id= item.getItemId();
- //noinspection SimplifiableIfStatement
- if (id== R.id.action_settings){
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
阅读(7) | 评论(0) | 转发(0) |
1
上一篇:spark RDD
下一篇:Spark 中算子功能与分类介绍
相关热门文章
- mysql不能导入和创建存储过程...
- 在 CentOS 7.1 上安装分布式存...
- 开发基于高德SDK的Android车载...
- 制作多版本 Fedora 系统安装 U...
- WPF Image赋值的两种方法...
- Android之开发环境搭建
- Android自定义View的实现...
- AndroidManifest.xml配置文件...
- Android相对布局+圆角按钮+Sha...
- 查看Android应用包名package和...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
评论热议
0 0
- android 存储结构与存储方法
- android 联系人存储结构
- android 联系人存储结构
- Android联系人存储结构
- Android联系人存储结构
- Android数据存储结构
- --树状结构存储与展示
- oracle数据类型与存储结构
- 存储结构与磁盘划分
- RHEL文件系统与存储结构
- android 联系人信息存储结构
- Android文件存储目录结构
- Android APK的存储结构
- [Android]资源存储方法
- Android 数据存储方法
- Android 数据存储方法
- android存储五个方法
- Oracle逻辑存储结构与物理存储结构
- I/O of python (INPUT / OUTPUT)
- 正则表达式
- sublime text2对编译无反应的解决办法
- function summary of nltk in python
- spark RDD
- android 存储结构与存储方法
- Spark 中算子功能与分类介绍
- spark standalone mode
- Android 随笔杂记
- Android 中 SQLite 的应用总结
- set up spark cluster -- create VM
- setup cluster -- ssh to each other with no key ssh免密钥登陆配置
- setup cluster -- configure hadoop
- 搭建spark cluster过程中遇到的网络问题