Android的数据存储
来源:互联网 发布:微.原色软件下载 编辑:程序博客网 时间:2024/05/17 23:53
android提供了五个选项,用来保存持久的应用数据。你的选择取决于你的特殊需求,比如,你是否需要这个数据为你的应用私有,或者能被其他的应用和用户访问,或者考虑到数据需要多大的存储空间。
他们分别是:
1、Shared Preferences。以键值对的形式存储的基本数据。
2、Internal Storage。内部存储,存储私有数据到设备内存。
3、External Storage。外置存储,存储共有数据到共享的外部存储。
4、SQLite Databases。SQLite数据库,存储结构化的数据到私有的数据库。
5、网络存储。使用自己的网络服务将数据存储到网络上。
android提供了一个内容提供者(content provider),来将你的数据(即使是私有数据)共享给其他的应用程序。内容提供者给你的应用程序公开读写访问,并会受到任何你强加的限制。
一、Shared Preferences
public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; @Override protected void onCreate(Bundle state){ super.onCreate(state); . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // We need an Editor object to make preference changes. // All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Commit the edits! editor.commit(); }}getSharedPreferences(String name, int mode)第二个参数有四个选项:
二、内部存储
你可以直接在设备的内部存储文件。默认情况下,保存在设备内部的文件是当前应用私有的,其他的应用不能访问他们。当你删除这个应用的时候,他们会被移除。
创建一个私有文件并写入到内部存储:
1、调用openFileOutput(),入参是文件名字和操作模式。然后它会返回一个FileOutputStream。
2、调用write()方法将数据写入到文件中。
3、调用close()方法关闭流。
String FILENAME = "hello_file";String string = "hello world!";FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);fos.write(string.getBytes());fos.close();操作模式同SharedPreferences的操作模式,也是那四种。
从内部存储读取文件:
1、调用openFileInput()方法,入参只有文件名称。然后返回一个FileInputStream。
2、调用read()方法读取文件的二进制数据。
3、调用close()方法关闭流。
String fileName = "hello_file";FileInputStream fin = openFileInput(fileName); int lenght = fin.available(); byte[] buffer = new byte[lenght]; fin.read(buffer);fin.close();这里有一个小提示:如果你想在编译的时候,保存一个静态文件在你的应用下,只需要将文件放到项目的res/raw/路径下面即可。你可以通过R.raw<filename>这个资源id,调用openRawResource()方法来访问它。这个方法会返回一个InputStream对象,你可以使用这个对象来读取这个文件,但是不能通过它来写入原始文件。
保存缓存文件
如果你需要缓存一些数据,而不是像一贯的去存储它,你可以使用getCacheDir()来打开一个File,代表着你的应用程序应该保存的零时缓存文件的内部目录,它的目录是:/data/data/<application package>/cache。
当设备的内部存储空间很少,已经要影响设备正常运行的时候,android系统就会删除这些缓存文件来恢复存储空间。但是,你不应该依靠系统来帮你清理这些文件。你应该自己来保持缓存文件,并且保持消费的内存空间在一定的范围内,比如1M以内。当用户删除你的应用时,这些文件也一起被删除掉了。
除了上面说到的getCacheDir()方法以外,这里还有一些其它常用的方法。
getFilesDir():获取你的系统文件目录的绝对路径,你的内部文件都保持在这里,目录是:/data/data/<application package>/files。
getDir():在你的内部存储空间中创建(或者打开现有的)目录。
deleteFile():删除一个报酬在内部存储的文件。
fileList() :返回当前你的应用保持的文件数组。
三、外置存储
//TODO未完待续
- Android的数据存储
- Android的数据存储
- android数据的存储
- Android 数据的存储
- Android的数据存储
- Android的数据存储
- Android 数据的存储
- Android数据存储内置存储的使用
- Android数据存储的外部存储总结
- Android存储数据的方式
- android的数据存储 SharedPreferences
- Android数据存储的方法
- Android的数据存储方式
- Android的数据存储方式
- Android的数据存储方式
- Android的数据存储方式
- Android的数据存储--SharedPreferences .
- Android -- (12) ,数据的存储
- [Go语言] 操作channel时遇到panic怎么办?
- Android5.0的Palette(调色板)、视图阴影、着色和裁剪介绍
- 硬件加速机制
- 管理口令(P):[INS-30011] 输入的 ADMIN 口令不符合 Oracle 建议的标准
- 卡尔曼(Kalman)滤波(二)--Kalman滤波的发展历史与应用
- Android的数据存储
- n位数字删除数问题
- java反射机制
- Spinner控件
- 梳理caffe代码pooling_layer(二十)
- android中listview的item可以获取到点击事件的方法
- 彻底解决git中.gitignore文件失效原因及解决办法
- FITS基本文件格式
- 天之痕——Tacke竹桑