您的位置:首页 > Web前端

安卓学习-(数据存储(文件和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);
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  安卓学习