android应用程序中的一些固定的数据应该怎么存储啊。
3个回答
展开全部
首先了解一下android的数据存储方式:文件流的读取,SQLite,Content Provider以及Preference.。 注:resource和assets中的文件用户方面是只可以读取不能够进行写的操作的。
Content Provider作为程序之间唯一共享数据途径,用在这里不是很合适。所以,
第一种方式,使用FileInputStream,FileOutputStreamdui类实现文件I/O操作,直接往手机中存储数据。
第二种方式,使用SQLite,通过SQLiteDatabase类中方法操作数据。
第三种方式,Preference用于存储简单数据类型的数据,一些设置信息的保存。个人认为用在这里最合适。 它利用键值对存储的。例:
存储:SharedPreferences.Editor editor =sp.edit();
editor.putString(KEY_TEXT,"yonghu");
editor.commit();
获取 :sp =getPreferences(MODE_PRIVATE);
String result =sp.getString(KEY_TEXT,null);
Content Provider作为程序之间唯一共享数据途径,用在这里不是很合适。所以,
第一种方式,使用FileInputStream,FileOutputStreamdui类实现文件I/O操作,直接往手机中存储数据。
第二种方式,使用SQLite,通过SQLiteDatabase类中方法操作数据。
第三种方式,Preference用于存储简单数据类型的数据,一些设置信息的保存。个人认为用在这里最合适。 它利用键值对存储的。例:
存储:SharedPreferences.Editor editor =sp.edit();
editor.putString(KEY_TEXT,"yonghu");
editor.commit();
获取 :sp =getPreferences(MODE_PRIVATE);
String result =sp.getString(KEY_TEXT,null);
2015-12-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
方法1:直接打开手机内存输入输出流进行存储数据
需要在清单文件加入读写内存卡权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//代码
public static void saveToFile(byte[] data){
File file = Environment.getExternalStorageDirectory();
//存储在内存卡mydata文件中
File dataFile = new File(file,"/mydata");
if(!dataFile.exists()){
try {
dataFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(dataFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
方法2:少量数据使用sharepreference,基本上是用来存储程序配置
SharedPreferences sp = context.getSharedPreferences("config",Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putBoolean("key", true);
//其他的还有String,int,long等基本类型
editor.commit();
方法3:使用Sqlite
先继承SqliteOpenHelper作为数据库打开帮助类
class Data extends SQLiteOpenHelper{
public Data(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table data("+
"varchar(20) name)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//使用sql语句进行数据操作
Data data = new Data(this, "asd", null, 1);
SQLiteDatabase database = data.getWritableDatabase();
String sql="insert into data values('test')";
database.execSQL(sql);
database.close();
需要在清单文件加入读写内存卡权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//代码
public static void saveToFile(byte[] data){
File file = Environment.getExternalStorageDirectory();
//存储在内存卡mydata文件中
File dataFile = new File(file,"/mydata");
if(!dataFile.exists()){
try {
dataFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(dataFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
方法2:少量数据使用sharepreference,基本上是用来存储程序配置
SharedPreferences sp = context.getSharedPreferences("config",Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putBoolean("key", true);
//其他的还有String,int,long等基本类型
editor.commit();
方法3:使用Sqlite
先继承SqliteOpenHelper作为数据库打开帮助类
class Data extends SQLiteOpenHelper{
public Data(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table data("+
"varchar(20) name)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//使用sql语句进行数据操作
Data data = new Data(this, "asd", null, 1);
SQLiteDatabase database = data.getWritableDatabase();
String sql="insert into data values('test')";
database.execSQL(sql);
database.close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是字符串,可以在res/value/array里面存放字符串和字符串数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询