[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()