Android 保存数据的四种方法
2014-08-28 20:10
447 查看
一、Preferences
Preferences是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。
通过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据。
二、文件存储
File是第二种方法,可以在设备本身的存储或者外接的存储中创建用于保存数据的文件。在默认的状态下,文件不能在不同的程序间共享。
写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。
读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的FileInputStream对象。
(注意:在其它程序中将无法应用相同的路径和文件名来操作文件)
另外编译程序之前,在res/raw/tempFile中建立一个static文件,这样可以在程序中通过Resources.openRawResource (R.raw.myDataFile)方法同样返回一个InputStream对象,直接读取文件内容。
三、SQL数据库
Databases在Android API中包括了应用SQLite databases的接口,每个程序所创建的数据库都是私有的,换句话说,程序间无法相互访问对方的数据库。
在程序中创建SQLiteDatabase对象,其中包含了大部分与database交互的方法,例如:读取数据或者管理当前数据。可以应用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法来创建新的数据库。
对于SQLitedatabase而言,其强大和方便的功能为Android提供了强有力的存储功能。特别是存储一些复杂的数据结构,例如:Android特别为通讯录创建了特有的数据类型,其中包含了非常多的子集而且涵盖了大部分的数据类型。
Android可以通过Sqlite3 database tool来查看指定数据库中表的内容,直接运行SQL命令来快速便捷的直接操作SQLite database。
数据库在设备中保存的地址是 /data/data/package_name/databases
四、网络
Network通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所以相对存在一些限制。通常需要导入两个相关操作的类:
java.net.*
android.net.*
以上是针对Android平台来存储和读取数据的常用方法。
其他参考文章:
Android数据存储之文件存储
getSharedPreferences两个参数的意义
FileOutputStream的练习(如何换行)
Preferences是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。
通过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据。
// 参考写入数据 SharedPreferences userInfo = getSharedPreferences("user_info", 0); userInfo.edit().putString("name", user.getText().toString()).commit(); userInfo.edit().putString("pass", password.getText().toString()).commit(); // 参考读取数据 SharedPreferences userInfo = getSharedPreferences("user_info", 0); String username = userInfo.getString("name", ""); String pass = userInfo.getString("pass", "");
二、文件存储
File是第二种方法,可以在设备本身的存储或者外接的存储中创建用于保存数据的文件。在默认的状态下,文件不能在不同的程序间共享。
写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。
读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的FileInputStream对象。
(注意:在其它程序中将无法应用相同的路径和文件名来操作文件)
另外编译程序之前,在res/raw/tempFile中建立一个static文件,这样可以在程序中通过Resources.openRawResource (R.raw.myDataFile)方法同样返回一个InputStream对象,直接读取文件内容。
// 写文件到SDCard,追加写入时要使用 new FileOutputStream(file,<strong>true</strong>); private void writeFileToSD(String value) { String sdStatus = Environment.getExternalStorageState(); if(!sdStatus.equals(Environment.MEDIA_MOUNTED)) { Log.d("TestFile", "SD card is not avaiable/writeable right now."); return; } try { String pathName="/sdcard/test/"; String fileName="file.txt"; File path = new File(pathName); File file = new File(pathName + fileName); if( !path.exists()) { Log.d("TestFile", "Create the path:" + pathName); path.mkdir(); } if( !file.exists()) { Log.d("TestFile", "Create the file:" + fileName); file.createNewFile(); } FileOutputStream stream = new FileOutputStream(file); byte[] buf = value.getBytes(); stream.write(buf); stream.close(); } catch(Exception e) { Log.e("TestFile", "Error on writeFilToSD."); e.printStackTrace(); } }
// 写入文件会被放置于data/data/your_app_package_name/files下 private void writeFile() { try { FileOutputStream stream = openFileOutput("testfile.txt", Context.MODE_WORLD_WRITEABLE); String s = "this is a test string writing to file."; byte[] buf = s.getBytes(); stream.write(buf); stream.close(); } catch (FileNotFoundException e) { Log.d("TestFile", "File not found."); } catch (IOException e) { Log.d("TestFile", "File write error."); } }
三、SQL数据库
Databases在Android API中包括了应用SQLite databases的接口,每个程序所创建的数据库都是私有的,换句话说,程序间无法相互访问对方的数据库。
在程序中创建SQLiteDatabase对象,其中包含了大部分与database交互的方法,例如:读取数据或者管理当前数据。可以应用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法来创建新的数据库。
对于SQLitedatabase而言,其强大和方便的功能为Android提供了强有力的存储功能。特别是存储一些复杂的数据结构,例如:Android特别为通讯录创建了特有的数据类型,其中包含了非常多的子集而且涵盖了大部分的数据类型。
Android可以通过Sqlite3 database tool来查看指定数据库中表的内容,直接运行SQL命令来快速便捷的直接操作SQLite database。
数据库在设备中保存的地址是 /data/data/package_name/databases
四、网络
Network通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所以相对存在一些限制。通常需要导入两个相关操作的类:
java.net.*
android.net.*
以上是针对Android平台来存储和读取数据的常用方法。
其他参考文章:
Android数据存储之文件存储
getSharedPreferences两个参数的意义
FileOutputStream的练习(如何换行)
相关文章推荐
- [转载]Android平台上四种保存数据的方法
- Android开发中保存数据的四种方法方法
- Android中保存数据的四种方法
- Android开发中保存数据的四种方法
- Android四种保存数据的方法
- Android开发中保存数据的四种方法方法
- Android中保存数据的四种方法
- Android中保存数据的四种方法
- Android中保存数据的四种方法
- Android开发中保存数据的四种方法
- Android开发中保存数据的四种方法方法
- Android中保存数据的四种方法
- Android中保存数据的四种方法
- Android中保存数据的四种方法
- Android开发中保存数据的四种方法方法
- Android平台上四种保存数据的方法
- Android开发中保存数据的四种方法方法
- Android意外情况(来电话,按Home键,内存不足)保存数据的方法
- Android中保存数据常用的方法
- Android提交数据到服务器的两种方式四种方法