




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SharedPreferences与文件存储张帆张帆nSharedPreferencesn 不同应用共享数据n Android文件操作n SDCard文件存取课程安排Shared Preferences存储到文件SQLite数据库内容提供者(Content provider)存储到网络服务器如何保存软件配置参数:uWindow: 采用ini文件进行uj2se应用: 采用properties属性文件uAndroid平台提供一个SharedPreferences类,它是一个轻量级的存储类,适合用于保存软件配置参数。u使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件
2、存放在/data/data/shared_prefs目录下SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下常用方法来访问SharedPreferences的key_value键值对。方法名称方法名称描述描述public abstract public abstract booleanboolean contains contains (String key)(String key)判断SharedPreferences是否包含特定key的数据public abstract public abstract SharedPreferences.E
3、ditorSharedPreferences.Editor edit ()edit ()返回一个Edit对象用于操作SharedPreferencespublic abstract Map public abstract Map getAllgetAll () ()获取SharedPreferences数据里全部的key-value对getXXXgetXXX(String (String key,XXXkey,XXX defvlauedefvlaue) )获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是bo
4、olean、float、int、long、String等基本类型的值由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。方法名称方法名称描述描述public abstract public abstract SharedPreferences.EditorSharedPreferences.Editor clear ()clear ()清空SharedPreferences里所有的数据public abstract public ab
5、stract booleanboolean commit ()commit ()当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改public abstract public abstract SharedPreferences.SharedPreferences.EditorEditor putXXXputXXX (String key, (String key, booleanboolean XXX) XXX)向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值p
6、ublic abstract public abstract SharedPreferences.EditorSharedPreferences.Editor remove remove (String key)(String key)删除SharedPreferences里指定key对应的数据项SharedPreferences sharedPreferences = getSharedPreferences(lxt008, Context.MODE_PRIVATE);Editor editor = sharedPreferences.edit();/获取编辑器editor.putStrin
7、g(name, lxt);editor.putInt(age, 35);mit();/提交修改生成的lxt008.xml文件内容如下:lxtgetSharedPreferences(na, memode)方法u参数1:指定该文件名称,名称不用带后缀。u参数2:指定文件的操作模式,共有四种操作模式。 Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND Context.MODE_APPEND:模式会检查文件是否存在,存在就往文
8、件追加内容,否则就创建新文件。 Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。 MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。访问SharedPreferences中的数据代码如下:SharedPreferences sharedPreferences = g
9、etSharedPreferences(lxt008, Context.MODE_PRIVATE);/getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值String name = sharedPreferences.getString(name, );int age = sharedPreferences.getInt(age, 1);nSharedPreferencesn 不同应用共享数据n Android文件操作n SDCard文件存取课程安排其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Conte
10、xt访问preference,访问preference时会在应用所在包下的shared_prefs目录找到preference :Context otherAppsContext = createPackageContext(“com.test,Context.CONTEXT_IGNORE_SECURITY);SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences(“test, Context.MODE_WORLD_READABLE);String name = sharedPreferences.
11、getString(name, );int age = sharedPreferences.getInt(age, 0);nSharedPreferencesn 不同应用共享数据n Android文件操作n SDCard文件存取课程安排文件可以存储比使用引用更大数量的数据Android 提供方法来读、写文件只有本地文件可以被访问优点:可以存储大容量的数据缺点:文件更新或是格式改变可能会导致巨大的编程工作Java提供了一套完整的IO流体系,用来对文件进行操作。Android同样支持以这种方式来访问手机存储器上的文件,包括内部存储器和外部存储器Android中可以在设备本身的存储设备或者外接的存储
12、设备中创建用于保存数据的文件。默认情况下,文件是不能在不同的程序间共享的。当该应用程序卸载时,这些文件将被删除掉。Android中的两种文件操作方式:第一种方式 类似于Java平台下的实现方式,直接根据路径操作IO流来存储数据。第二种方式,使用Context提供的方法来直接操作Context.openFileInput(String name)打开一个与应用程序联系的私有文件输入流当文件不存在时抛出FileNotFoundException FileInputStream in = this.openFileInput(test.txt);/打开文件test.txtin.close();/关闭
13、输入流1./读取文件内容2.privateStringreadFiles()3.Stringcontent=null;4.try5.FileInputStreamfis=openFileInput(FILENAME);6.ByteArrayOutputStreambaos=newByteArrayOutputStream();7.bytebuffer=newbyte1024;8.intlen=0;9.while(len=fis.read(buffer)!=-1)10.baos.write(buffer,0,len);11.12.content=baos.toString();13.fis.cl
14、ose();14.baos.close();15.catch(Exceptione)16.e.printStackTrace();17.18.returncontent;19. Context.openFileOutput(String name,int mode)u开启一个与应用程序联系的私有文件输出流当文件不存在时该文件将被创建文件输出流可以在添加模式中打开,这意味新的数据将被添加到文件的末尾FileOutputStream out = this.openFileOutput(test2.txt,MODE_APPEND);/打开文件test2.txt进行写操作、使用MODE_APPEND
15、在添加模式中打开文件out.close();/关闭输出流1./保存文件内容2.privatevoidwriteFiles(Stringcontent)3.try4./打开文件获取输出流,文件不存在则自动创建5.FileOutputStreamfos=openFileOutput(FILENAME,6.Context.MODE_PRIVATE);7.fos.write(content.getBytes();8.fos.close();9.catch(Exceptione)10.e.printStackTrace();11.12.Context提供了openFileOutput()方法可以用于把数
16、据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。public class FileActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . FileOutputStream outStream = this.openFileOutput(“test.txt, Context.MODE_PRIVATE); outStream.write(“zf.getBytes(); outStream.close(); openFileOutput()方法的第一参数用于指定
17、文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/files目录,如: /data/data/com.test/files/test.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/files目录就可以看到该文件。openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVAT
18、E = 0 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPENDContext.MODE_APPEND = 32768 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。Context.MODE_WORLD_READABLE = 1 表示当前文件可以被其他应用读取Context.MODE_WORLD_WRITEABLE = 2 表示当前文件可以被其他应用写入如果要打开存放在/data/data/files目录应用私有的文件,可以使用Context提供o
19、penFileInput()方法。FileInputStream inStream = this.getContext().openFileInput(“lxt008.txt);Log.i(FileTest, readInStream(inStream);readInStream()的方法请看本页下面备注。或者直接使用文件的绝对路径:File file = new File(/data/data/com.test/files/lxt008.txt);FileInputStream inStream = new FileInputStream(file);Log.i(FileTest, read
20、InStream(inStream);注意:上面文件路径中的“com.test”为应用所在包,应替换为你自己应用使用的包。对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。Activity还提供了getCacheDir()和getFilesDir()方法:getCacheDir()方法用于获取/data/data/cache目录getFilesDir()方法用于获取/data/data/files目录在Android中,除了对应用程序私有文件夹中的文件进行操作之外,还可以从资源文件和Assets中获得输入流读取数据。这些文件分别存放在应用程序的res/raw目录和assets目录下。这些文件将在编译的时候和其他文件一起打包进APK中。注意,这两个文件夹下的文件只能进行读操作,不能进行写操作。1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作InputStream is = getResources().openRawResource(R.id.filename); 2.读取assets下的文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津舞台喷泉施工方案
- 建筑施工方案分类
- 调料品税务知识培训课件
- 合同范例 购销合同
- 合肥搬家合同范例
- 只有金额合同范例
- 买卖他人按揭房合同范例
- 特殊学生支持与帮助方案计划
- 强化数据保护与隐私管理计划
- 全院综合评估与自查报告计划
- 男护士的职业生涯规划书
- 2025年黑龙江旅游职业技术学院单招职业技能测试题库含答案
- 工艺技术人员工作总结
- DB61T-农产品区域公用品牌管理规范
- 中央2025年中国民航大学劳动合同制人员招聘7人笔试历年参考题库附带答案详解
- 北京市朝阳区2024-2025学年高一上学期期末质量检测数学试题【含答案解析】
- 高一生活指南模板
- 广州电视塔钢结构施工方案
- 龙门吊拆除合同
- 【9物一模】2024年安徽省合肥市庐阳中学九年级中考一模物理试卷
- 2024-2025学年部编版历史七年级下册第一单元综合评估卷(含答案)
评论
0/150
提交评论