Android数据存储(一)
2014-04-16 19:10
281 查看
总结了最近对android数据存储的学习:
一,SharedPreferences
SharedPreferences是android平台上的一种轻量级保存方式,主要存储一些简单的配置信息。
SharedPreferences支持3种访问模式
1,私有(MODE_PRIVATE):只有创建程序有读取或写入SharePreferences的权限
2,全局读(MODE_WORLD_READABLE):其他程序有读取数据的权限,但没写入的权限
3,全局写(MODE_WORLD_WRITEABLE):其他程序有写入数据的权限,但没读取的权限
---------------------------------------
过程:
1,设置界面:
main.xml:
2,Activity代码:
------------------------------------------------------------------------------------------------
运行结果:
打开data/data/org.jian.test看到:
保存在本地电脑。
打开jian.xml
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
二,File存储数据:
记得以前学习Java IO的时候先用FileInputStream读取文件上的信息,然后用FileOutputStream把信息写入文件;
在安卓中,将是通过Context.openFileInput()方法读取文件上的信息,通过Context.openFileOutput()把信息写入文件
Android 系统支持的4种文件操作模式
MODE_PRIVATE 私用模式
MODE_WORLD_READABLE 全局读模式
MODE_WORLD_WRITEABLE 全局写模式
MODE_APPEND 追加模式
1,设置界面:
---------------------------------------------------------------------------------------------------------------------------------------
输入数据:
在File Explore:
在本机打开jian.txt
读写数据:
一,SharedPreferences
SharedPreferences是android平台上的一种轻量级保存方式,主要存储一些简单的配置信息。
SharedPreferences支持3种访问模式
1,私有(MODE_PRIVATE):只有创建程序有读取或写入SharePreferences的权限
2,全局读(MODE_WORLD_READABLE):其他程序有读取数据的权限,但没写入的权限
3,全局写(MODE_WORLD_WRITEABLE):其他程序有写入数据的权限,但没读取的权限
---------------------------------------
过程:
1,设置界面:
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Username"/> <EditText android:id="@+id/username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=""/> <!-- 密码 --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Password"/> <EditText android:id="@+id/password" android:password="true" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=""/> <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存"/> </LinearLayout>
2,Activity代码:
package org.jian.test; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SharedPreferencesTest extends Activity { private static final String FILE_NAME = "jian" ; //XML文件名字(后面不需要加.xml) private static final String NAME = "NAME" ; private static final String PASS = "PASS" ; private EditText username ; private EditText password ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main) ; username = (EditText) findViewById(R.id.username) ; //获取姓名 password = (EditText) findViewById(R.id.password) ; //获取密码 Button btn = (Button) findViewById(R.id.login) ; //按钮 getWindow().setBackgroundDrawableResource(R.color.black) ; btn.setOnClickListener(new OnClickListener() { //触发事件 @Override public void onClick(View v) { // TODO Auto-generated method stub SharedPreferences sp = getSharedPreferences(FILE_NAME, 0) ; String _username = username.getText().toString() ; //获取数据 String _password = password.getText().toString() ; SharedPreferences.Editor edit = sp.edit() ; //保存资料 edit.putString(NAME, _username) ; edit.putString(PASS, _password) ; edit.commit() ; Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_LONG).show() ;//打印保存成功 } }) ; } }AndroidManifest.xml的代码比较简单,就不写了;
------------------------------------------------------------------------------------------------
运行结果:
打开data/data/org.jian.test看到:
保存在本地电脑。
打开jian.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="PASS">123456</string> <string name="NAME">jian</string> </map>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
二,File存储数据:
记得以前学习Java IO的时候先用FileInputStream读取文件上的信息,然后用FileOutputStream把信息写入文件;
在安卓中,将是通过Context.openFileInput()方法读取文件上的信息,通过Context.openFileOutput()把信息写入文件
Android 系统支持的4种文件操作模式
MODE_PRIVATE 私用模式
MODE_WORLD_READABLE 全局读模式
MODE_WORLD_WRITEABLE 全局写模式
MODE_APPEND 追加模式
1,设置界面:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请输入姓名"/> <EditText android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/username"/> <!-- 密码框 --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请输入密码"/> <EditText android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true" android:id="@+id/password"/> <!-- 保存与读取 --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" android:id="@+id/save"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="读取" android:id="@+id/read"/> </LinearLayout> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/text" android:text="读取的内容\n"/> </LinearLayout>2,Activity:
package org.jian.test; import java.io.FileInputStream; import java.io.FileOutputStream; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class FileActivity extends Activity{ EditText username = null ; EditText password = null ; Button save = null ; Button read = null ; String fileName = "jian.txt" ; //要保存的文件 TextView text = null ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.filetest) ; username = (EditText)findViewById(R.id.username) ; //Username数据 password = (EditText)findViewById(R.id.password) ; //Password数据 save = (Button)findViewById(R.id.save) ; //登陆按钮 read = (Button)findViewById(R.id.read) ; text = (TextView)findViewById(R.id.text) ; save.setOnClickListener(new OnClickListener() { //点击btn触发事件 @Override public void onClick(View v) { //获取username与password里面的数据 String name = username.getText().toString() ; String pass = password.getText().toString() ; String result = "姓名:" + name + "\n" + "密码:" + pass + "\n" ; //合并字符 save(fileName, result) ; //存储到文件 Toast.makeText(getApplicationContext(), "数据保存成功", Toast.LENGTH_LONG).show() ; //显示保存成功 } }) ; read.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String result = read(fileName) ; text.append(result) ; //读取的内容 Toast.makeText(getApplicationContext(), "数据显示成功", Toast.LENGTH_LONG).show() ; } }) ; } private void save(String fileName , String fileContent){ //将同过IO把fileName文件的数据fileContent //保存数据的私有方法 FileOutputStream fos = null ; try { fos = openFileOutput(fileName, Context.MODE_PRIVATE) ; //用MODE_PRIVATE模式打开文件 fos.write(fileContent.getBytes()) ; //把文件写入到fos fos.close() ; //关闭文件 } catch (Exception e) { // TODO Auto-generated catch block Log.e("MainActivity.save", "Exception:"+e) ; } } private String read(String fileName){ //读取内容,返回一个字符串 FileInputStream fis = null ; byte[] data = null ; try { fis = openFileInput(fileName) ; //打开文件 if(fis.available()==0){ //如果文件为空 return "" ; } data = new byte[fis.available()] ; fis.read(data) ; //读取文件里的内容 fis.close() ; } catch (Exception e) { Log.e("MainActivity.read", "Exception:"+e) ; } return new String(data) ; } }3,运行测试
---------------------------------------------------------------------------------------------------------------------------------------
输入数据:
在File Explore:
在本机打开jian.txt
姓名:jian 密码:123456
读写数据:
相关文章推荐
- Android中Activity执行restart过程中涉及到的四种数据存储恢复的方法
- 我的Android之旅(十八)---数据存储--向SD卡保存网络上的图片
- Android数据的四种存储方式之SharedPreferences、SQLite、ContentProvider和File
- Android数据存储与IO之四(SQLite)
- Android中的SharedPreferences存储数据方式
- Android数据的四种存储方式(三) —— SharePreferences
- Android应用开发SharedPreferences存储数据的使用方法
- Android数据存储实现的5大方式
- android 数据存储
- android jni jobjectArray存储输出不同类型的数据
- Android中的数据存储
- Android三级存储——将网络数据存储到内存和缓存
- android开发之数据存储与访问(一)—File
- Android数据持久化之二:SharedPreferences 存储(上)
- Android笔记(四十) Android中的数据存储——SQLite(二) insert
- 在Android中Preferences数据存储的…
- android数据存储与访问之使用SharedPreferences
- Android 数据存储(一) 共享参数存储
- android 数据存储之SharedPreferences
- Android攻城狮的第二门课(第3季)第1章 数据存储之SharedPreferences