安卓学习-(数据存储(文件和SharedPreferences))
2017-09-02 15:21
357 查看
1、方式1:使用文件存储
package
com.example.filepersistencetest;
import
android.content.Context;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.text.TextUtils;
import
android.widget.EditText;
import
android.widget.Toast;
import
java.io.BufferedReader;
import
java.io.BufferedWriter;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
public class
MainActivity
extends
AppCompatActivity {
private
EditText
edit;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit
= (EditText) findViewById(R.id.edit);
String inputText = load();
//!TextUtils.isEmpty()
用于判断一个数据是不是 null
if
(!TextUtils.isEmpty(inputText)) {
edit.setText(inputText);
edit.setSelection(inputText.length());
Toast.makeText(this,
"Restoring succeeded", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void
onDestroy() {
super.onDestroy();
String inputText =
edit.getText().toString();
save(inputText);
}
//从文件中把数据读出来,文件路径是确定的,我们只需要指定一个文件名字就可以读取内容
public void
save(String inputText) {
FileOutputStream out =
null;
BufferedWriter writer =
null;
try
{
// Context.MODE_PRIVATE :默认模式,文件同名会覆盖数据
//MODE_APPEND:表示追加模式
out = openFileOutput("data",
Context.MODE_PRIVATE);
writer =
new
BufferedWriter(new
OutputStreamWriter(out));
writer.write(inputText);
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
try
{
if
(writer !=
null) {
writer.close();
}
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
//把数据保存到文件中,路径是默认的,我们只可以指定一个文件名字,这里给的是data这个名字
public
String load() {
FileInputStream in =
null;
BufferedReader reader =
null;
StringBuilder content =
new
StringBuilder();
try
{
in = openFileInput("data");
reader =
new
BufferedReader(new
InputStreamReader(in));
String line =
"";
while
((line = reader.readLine()) !=
null) {
content.append(line);
}
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(reader !=
null) {
try
{
reader.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
return
content.toString();
}
}
2、方式2:使用SharedPreferences(python单层字典)
package
com.example.sharedpreferencestest;
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) {
//getSharedPreferences
是在context类中获取 SharedPreferences 对象的方法。
//需要传入文件名(这里是data), 第二个参数 MODE_PRIVATE表示只有当前程序可以操作数据
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);
}
});
}
}
package
com.example.filepersistencetest;
import
android.content.Context;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.text.TextUtils;
import
android.widget.EditText;
import
android.widget.Toast;
import
java.io.BufferedReader;
import
java.io.BufferedWriter;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
public class
MainActivity
extends
AppCompatActivity {
private
EditText
edit;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit
= (EditText) findViewById(R.id.edit);
String inputText = load();
//!TextUtils.isEmpty()
用于判断一个数据是不是 null
if
(!TextUtils.isEmpty(inputText)) {
edit.setText(inputText);
edit.setSelection(inputText.length());
Toast.makeText(this,
"Restoring succeeded", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void
onDestroy() {
super.onDestroy();
String inputText =
edit.getText().toString();
save(inputText);
}
//从文件中把数据读出来,文件路径是确定的,我们只需要指定一个文件名字就可以读取内容
public void
save(String inputText) {
FileOutputStream out =
null;
BufferedWriter writer =
null;
try
{
// Context.MODE_PRIVATE :默认模式,文件同名会覆盖数据
//MODE_APPEND:表示追加模式
out = openFileOutput("data",
Context.MODE_PRIVATE);
writer =
new
BufferedWriter(new
OutputStreamWriter(out));
writer.write(inputText);
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
try
{
if
(writer !=
null) {
writer.close();
}
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
//把数据保存到文件中,路径是默认的,我们只可以指定一个文件名字,这里给的是data这个名字
public
String load() {
FileInputStream in =
null;
BufferedReader reader =
null;
StringBuilder content =
new
StringBuilder();
try
{
in = openFileInput("data");
reader =
new
BufferedReader(new
InputStreamReader(in));
String line =
"";
while
((line = reader.readLine()) !=
null) {
content.append(line);
}
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(reader !=
null) {
try
{
reader.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
return
content.toString();
}
}
2、方式2:使用SharedPreferences(python单层字典)
package
com.example.sharedpreferencestest;
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) {
//getSharedPreferences
是在context类中获取 SharedPreferences 对象的方法。
//需要传入文件名(这里是data), 第二个参数 MODE_PRIVATE表示只有当前程序可以操作数据
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);
}
});
}
}
相关文章推荐
- 安卓学习之数据存储之以文件方式存储
- 利用IStorage和IStream存储自定义数据到Inventor文件 (.NET)
- 【Cocos creator】文件数据读写,用户数据存储
- [数据存储之四]XML文件读取
- Android之使用文件进行数据存储
- 二进制存储大数据文件
- Android学习日记——数据存储5部曲之文件存储
- Android学习14——数据存储之文件存储
- 数据加载、存储与文件格式
- android菜鸟学习笔记17----Android数据存储(一)文件读写
- Android中的文件存储数据方式
- 数据存储之文件存储
- MongoDB在java中的操作-添,删,查 基本数据 文件存储 可使用
- android数据存储与访问之使用普通文件
- 文件进行数据存储
- 详解如何在python中读写和存储matlab的数据文件(*.mat)
- android数据存储中的文件存储学习记录
- 安卓存储数据和文件系列3:SQLite数据库方式
- 数据存储之Raw和Assets文件读取
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!