【android开发-16】android中文件和sharedpreferences数据存储详解
1,文件读写方式的数据存储
下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件:
保存文件:
try {
String data = "这是要保存的数据";
FileOutputStream fos = openFileOutput("myFile", Context.MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter wr= new BufferedWriter (osw);
wr.write(data );
wr.close();
} catch (Exception e) {
e.printStackTrace();
}
在这个例子中,我们使用openFileOutput方法来打开一个文件输出流。我们传递两个参数给这个方法:文件名和模式。模式可以是Context.MODE_PRIVATE(默认),Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITABLE。
读取文件:
try {
FileInputStream fis = openFileInput("myFile");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
Log.e("DATA", line);
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
在这个例子中,我们使用openFileInput方法来打开一个文件输入流。然后,我们创建一个InputStreamReader和一个BufferedReader来读取文件的内容。最后,我们使用readLine方法来逐行读取文件的内容。
注意:文件都是默认存储到/data/data/package name/files/目录下。
注意:在Android 10(API级别29)及更高版本中,对于内部存储,Google开始限制可以访问的数据。你可能需要考虑使用其他策略,如使用外部存储或使用SQLite数据库。
2,sharedpreferences方式读写数据
在Android中,SharedPreferences是一个轻量级存储类,主要用于保存一些基本类型的数据,如String,Int,Boolean等。它提供了简单的读写接口,允许开发人员存储和获取数据。以下是如何使用SharedPreferences来读写数据的示例代码:
写入数据:
SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
// 存储一个字符串
editor.putString("key1", "value1");
// 存储一个整数
editor.putInt("key2", 123);
// 存储一个布尔值
editor.putBoolean("key3", true);
// 提交编辑
editor.commit();
读取数据
SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
// 读取一个字符串
String value1 = sharedPreferences.getString("key1", "default_value");
// 读取一个整数
int value2 = sharedPreferences.getInt("key2", 0);
// 读取一个布尔值
boolean value3 = sharedPreferences.getBoolean("key3", false);
注意:getSharedPreferences方法的第一个参数是偏好设置文件的名称,如果该名称不存在,系统将创建一个新的。第二个参数是模式,通常我们使用MODE_PRIVATE或Context.MODE_PRIVATE。如果使用MODE_WORLD_READABLE或Context.MODE_WORLD_READABLE,则从Android 4.2(API级别17)开始已经被废弃。
注意:sharedpreferences是使用键值对的方式存储数据。
默认的存储路径/data/data/package name/shared_pref/目录下。
使用xml的格式来管理数据:
完整的参考用例代码:
以下是在Android中使用SharedPreferences的完整参考代码用例。这个例子展示了如何使用SharedPreferences来存储和读取用户的偏好设置。
写入数据:
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.Context;
import android.preference.PreferenceManager;
public class MyActivity extends Activity {
private SharedPreferences sharedPreferences;
private Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。
sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
editor = sharedPreferences.edit();
// 存储一个字符串
editor.putString("key1", "value1");
// 存储一个整数
editor.putInt("key2", 123);
// 存储一个布尔值
editor.putBoolean("key3", true);
// 提交编辑,将数据保存到SharedPreferences中。
editor.commit();
}
}
读取数据:
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
import android.widget.TextView;
public class MyActivity extends Activity {
private SharedPreferences sharedPreferences;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
// 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。
sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
// 读取一个字符串,如果找不到键,则返回默认值"default_value"
String value1 = sharedPreferences.getString("key1", "default_value");
textView.setText("Value of key1: " + value1);
// 读取一个整数,如果找不到键,则返回默认值0
int value2 = sharedPreferences.getInt("key2", 0);
textView.append("\nValue of key2: " + value2);
// 读取一个布尔值,如果找不到键,则返回默认值false
boolean value3 = sharedPreferences.getBoolean("key3", false);
textView.append("\nValue of key3: " + value3);
}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!