[Android API学习]Data Storage胡乱翻译(1)
原文请查阅:http://developer.android.com.nyud.net/guide/topics/data/data-storage.html
?
Android为你提供了多个可选的方式来保存持久的应用数据。你可以基于特定的需求来选择解决方案,例如数据是否应该是你的应用私有的还是对其他应用(和用户)公开的以及你的数据需要多大的空间来储存。
?
你可选的数据储存方式如下:
Shared preferences are not strictly for saving "user preferences," such as what ringtone a user has chosen. If you're interested in creating user preferences for your application, see PreferenceActivity
, which provides an Activity framework for you to create user preferences, which will be automatically persisted (using shared preferences).
?
要给你的应用获取一个SharedPreference对象,使用以下的两个函数之一:?
写入数值:
1.调用edit()函数来获得一个SharedPreferences.Editor对象。
2.通过putBoolean()、putString()等函数来添加数值。
3.通过commit()函数来提交和确认操作。
?
要读取数值,使用SharedPreferences中的getBoolean()、getString()等函数。?
这里是一个例子,为一个计算器的按键静音模式保存了一个偏好:String FILENAME = "hello_file";String string = "hello world!";FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);fos.write(string.getBytes());fos.close();MODE_PRIVATE会创建文件并使它对你的应用私有。其他可用的模式有:MODE_APPEND、
MODE_WORLD_READABLE
和MODE_WORLD_WRITEABLE。
?
要从内部存储器中读取一个文件:1.调用openFileInput()函数并传递一个文件名来读取。返回的是一个FileInputStream对象。
2.使用read()函数读取文件中的字节。
3.然后使用close()函数关闭流。
提示:如果你希望在编译的时候保存一个静态的文件到你的应用中,将文件保存到你项目的res/raw/?目录下。你使用openRawResource()函数可以打开它,传递一个R.raw.<filename>资源ID。该函数返回一个你可以用来读取文件的InputStream对象(但你无法改写原始文件)。
?
当设备的内部储存空间较低时,Android可能会删除这些缓存文件来取回空间。无论如何,你不应该依靠系统来为你清空这些文件。你应该始终自己来维护缓存文件并维持在一个合理的空间消耗,比如1MB。当用户卸载你的应用,这些文件会被移除。
?
其他有用的函数 (Other useful methods)
getFilesDir()
getDir()
deleteFile()
fileList()