Android4开发入门经典 之 第七部分:数据存储
数据存储基本知识
Android系统提供了多种数据存储的方式,如下:
使用Shared Preferences
要获得SharedPreferences对象,通常有两种方法:
使用SharedPreferences对象来存储数据,大致有如下几步
向SharedPreferences对象写入数据
- SharedPreferences sp =getSharedPreferences("SP",Activity.MODE_PRIVATE);
- SharedPreferences.Editor editor = sp.edit();
- editor.putString("param1", "sp1");
- editor.putInt("param2", 222);
- editor.commit();
在获得SharedPreferences对象的时候,需要指定文件创建的模式:
从SharedPreferences对象读取数据
- SharedPreferences sp = T2.this.getSharedPreferences("SP",Activity.MODE_PRIVATE);
- String p1 = sp.getString("param1","");
- int p2 = sp.getInt("param2",0);
Internal Storage
在使用openFileOutput方法的时候,需要指定打开的模式:
向应用对应的Internal Storage里面写入数据,这里以写对象来示例,如下:
- FileOutputStream fout = null;
- ObjectOutputStream os = null;
- try{
- fout = HelloWorldActivity.this.openFileOutput("MyData.txt",Activity.MODE_PRIVATE);
- os = new ObjectOutputStream(fout);
- os.writeObject(list);
- }catch(Exception err){err.printStackTrace();}
- finally{
- try {fout.close();}catch(IOException e1){e1.printStackTrace();}
- try {os.close();} catch(IOException e){e.printStackTrace();}
- }
- 不支持BufferedOutputStream
读取应用对应的Internal Storage里面的数据,这里以读取对象来示例,如下:
- FileInputStream fin = null;
- ObjectInputStream os = null;
- try{
- fin = HelloWorldActivity.this.openFileInput("MyData.txt");
- os = new ObjectInputStream(fin);
- Toast.makeText(HelloWorldActivity.this, "read file="+os.readObject(), Toast.LENGTH_LONG).show();
- }catch(Exception err){
- err.printStackTrace();
- }finally{
- try{fin.close();}catch(IOException e1){e1.printStackTrace();}
- try{os.close();}catch(IOException e){e.printStackTrace();}
- }
- 同样不支持BufferedInputStream
Internal Storage-保存Cache文件
Internal Storage-其它常用方法
在Context中其他常用的方法:
External Storage(操作SD卡)
Android的I/O基本上和Java的I/O是一样的,只有一点点不同的地方,比如:
常用的功能
从SD卡上读文件,基本就是Java里面I/O的操作,这里以读对象为例:
- public Object readFile(String filePathName) {
- Object ret = null;
- FileInputStream fins = null;
- ObjectInputStream os = null;
- try {
- File file = new File(Environment.getExternalStorageDirectory() + filePathName);
- fins = new FileInputStream(file);
- os = new ObjectInputStream(fins);
- ret = os.readObject();
- } catch(Exception err){err.printStackTrace();}finally{
- try {fins.close();}catch(IOException e){e.printStackTrace();}
- try {os.close();}catch(IOException e){e.printStackTrace();}
- }
- return ret;
- }
- 比较遗憾的是,目前加上BufferedInputStream就出错
向SD卡上写文件,基本就是Java里面I/O的操作,这里以写对象为例:
- public void writefile(String filePathName,Object obj){
- FileOutputStream fouts = null;
- ObjectOutputStream os = null;
- try {
- File file = new File(Environment.getExternalStorageDirectory() +filePathName);
- if(file.getParentFile().isDirectory() && !file.getParentFile().exists()){
- file.getParentFile().mkdirs();
- }
- if(!file.exists()){ file.createNewFile(); }
- fouts = new FileOutputStream(file);
- os = new ObjectOutputStream(fouts);
- os.writeObject(obj);
- } catch (Exception err) {err.printStackTrace();
- }finally{
- try {fouts.close();}catch(IOException e){e.printStackTrace();}
- try {os.close();}catch(IOException e){e.printStackTrace();}
- }
- }
- 如果要保存成Cache文件,可以使用Context的getExternalCacheDir方法
视频配套PPT,视频地址【 Android4开发入门经典独家视频课程】
数据存储基本知识
Android系统提供了多种数据存储的方式,如下:
使用Shared Preferences
要获得SharedPreferences对象,通常有两种方法:
使用SharedPreferences对象来存储数据,大致有如下几步
向SharedPreferences对象写入数据
- SharedPreferences sp =getSharedPreferences("SP",Activity.MODE_PRIVATE);
- SharedPreferences.Editor editor = sp.edit();
- editor.putString("param1", "sp1");
- editor.putInt("param2", 222);
- editor.commit();
在获得SharedPreferences对象的时候,需要指定文件创建的模式:
从SharedPreferences对象读取数据
- SharedPreferences sp = T2.this.getSharedPreferences("SP",Activity.MODE_PRIVATE);
- String p1 = sp.getString("param1","");
- int p2 = sp.getInt("param2",0);
Internal Storage
在使用openFileOutput方法的时候,需要指定打开的模式:
向应用对应的Internal Storage里面写入数据,这里以写对象来示例,如下:
- FileOutputStream fout = null;
- ObjectOutputStream os = null;
- try{
- fout = HelloWorldActivity.this.openFileOutput("MyData.txt",Activity.MODE_PRIVATE);
- os = new ObjectOutputStream(fout);
- os.writeObject(list);
- }catch(Exception err){err.printStackTrace();}
- finally{
- try {fout.close();}catch(IOException e1){e1.printStackTrace();}
- try {os.close();} catch(IOException e){e.printStackTrace();}
- }
- 不支持BufferedOutputStream
读取应用对应的Internal Storage里面的数据,这里以读取对象来示例,如下:
- FileInputStream fin = null;
- ObjectInputStream os = null;
- try{
- fin = HelloWorldActivity.this.openFileInput("MyData.txt");
- os = new ObjectInputStream(fin);
- Toast.makeText(HelloWorldActivity.this, "read file="+os.readObject(), Toast.LENGTH_LONG).show();
- }catch(Exception err){
- err.printStackTrace();
- }finally{
- try{fin.close();}catch(IOException e1){e1.printStackTrace();}
- try{os.close();}catch(IOException e){e.printStackTrace();}
- }
- 同样不支持BufferedInputStream
Internal Storage-保存Cache文件
Internal Storage-其它常用方法
在Context中其他常用的方法:
External Storage(操作SD卡)
Android的I/O基本上和Java的I/O是一样的,只有一点点不同的地方,比如:
常用的功能
从SD卡上读文件,基本就是Java里面I/O的操作,这里以读对象为例:
- public Object readFile(String filePathName) {
- Object ret = null;
- FileInputStream fins = null;
- ObjectInputStream os = null;
- try {
- File file = new File(Environment.getExternalStorageDirectory() + filePathName);
- fins = new FileInputStream(file);
- os = new ObjectInputStream(fins);
- ret = os.readObject();
- } catch(Exception err){err.printStackTrace();}finally{
- try {fins.close();}catch(IOException e){e.printStackTrace();}
- try {os.close();}catch(IOException e){e.printStackTrace();}
- }
- return ret;
- }
- 比较遗憾的是,目前加上BufferedInputStream就出错
向SD卡上写文件,基本就是Java里面I/O的操作,这里以写对象为例:
- public void writefile(String filePathName,Object obj){
- FileOutputStream fouts = null;
- ObjectOutputStream os = null;
- try {
- File file = new File(Environment.getExternalStorageDirectory() +filePathName);
- if(file.getParentFile().isDirectory() && !file.getParentFile().exists()){
- file.getParentFile().mkdirs();
- }
- if(!file.exists()){ file.createNewFile(); }
- fouts = new FileOutputStream(file);
- os = new ObjectOutputStream(fouts);
- os.writeObject(obj);
- } catch (Exception err) {err.printStackTrace();
- }finally{
- try {fouts.close();}catch(IOException e){e.printStackTrace();}
- try {os.close();}catch(IOException e){e.printStackTrace();}
- }
- }
- 如果要保存成Cache文件,可以使用Context的getExternalCacheDir方法
转载于:https://www.cnblogs.com/helloandroid1/archive/2012/08/06/2624538.html
Android4开发入门经典 之 第七部分:数据存储相关推荐
- Android4开发入门经典 之 第十二部分:最佳实践
性能提升 有两个编写有效代码的基本规则: 1:不要做你不需要做的. 2:不分配没必要分配的内存. 应该尽量避免创建多余的对象,比如: 1:在一组输入数据中抽取字符串时,尝试返回源数据的子串,而非创建一 ...
- Android4开发入门经典 之 第十二部分:最佳实践【私塾在线原创】
性能提升 有两个编写有效代码的基本规则: 1:不要做你不需要做的. 2:不分配没必要分配的内存. 应该尽量避免创建多余的对象,比如: 1:在一组输入数据中抽取字符串时,尝试返回源数据的子串,而非创建一 ...
- Android4开发入门经典 之 第四部分:用户界面
基本概念 常用Widgets和布局 常用的Widgets TextView.Button. EditText.CheckBox.RadioGroup.RadioButton.Spinner.Progr ...
- 《iOS 8应用开发入门经典(第6版)》——第1章,第1.6节小结
本节书摘来自异步社区<iOS 8应用开发入门经典(第6版)>一书中的第1章,第1.6节小结,作者 [美]John Ray(约翰 雷),更多章节内容可以访问云栖社区"异步社区&qu ...
- 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...
- 《iOS 9应用开发入门经典(第7版)》——第2章,第2.4节小结
本节书摘来自异步社区<iOS 9应用开发入门经典(第7版)>一书中的第2章,第2.4节小结,作者 [美]约翰 雷(John Ray),更多章节内容可以访问云栖社区"异步社区&qu ...
- 谷歌眼镜开发入门经典
2019独角兽企业重金招聘Python工程师标准>>> 谷歌眼镜开发入门经典 Google Glass将是目前以及未来几年风靡全球的革命性的移动计算平台,<谷歌眼镜开发入门经典 ...
- 《Android应用开发入门经典(第3版)》——导读
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的目录,作者 [美]Carmen Delessio , Lauren Darcey , Shane Conder,更多 ...
- HTML5移动应用开发入门经典 中文pdf扫描版
HTML5是关注度ZUI高的前沿Web技术,而移动互联网则是近两年ZUI炙手可热的Web领域.<HTML5移动应用开发入门经典>将这两者巧妙结合起来,详细讲解了如何利用HTML5进行移动应 ...
最新文章
- python lambda 逻辑_Python之lambda表达式和内置函数
- 2017-2018-1 20155226 20155234 《信息安全系统设计基础》 实验一总结
- 聚集索引和非聚集索引
- 用友 提示“尚有已全部暂估报销的单据未进行处理,不能进行12月的期末处理!”...
- Linux中Shell的命令替换用法笔记
- arm opcode hook
- 数据结构--红黑树 Red Black Tree
- C++: error: call of overloaded ‘abs(int)’ is ambiguous
- python, 面向对象编程Object Oriented Programming(OOP)
- 【三维路径规划】基于matlab蚁群算法无人机三维路径规划【含Matlab源码 1278期】
- 软件测试的功能点理解
- Oracle long 类型转 varchar2
- 精度LiDAR-Monocular Visual Odometry
- 懂点excel作图, 怎么让pyechart作的图更具“职场范“呢?丨pyechart工作作图模板
- 浑浑噩噩10年,入坑软件测试,6年干到测试leader,非科班的我也能当程序员!
- unity检测范围内敌人_unity_小功能实现(敌人追踪主角)
- 醉逍遥显示无法更新服务器,蜀门醉逍遥版本修改教程 (值好几千,俺心血).doc
- 解决uniapp的 swiper 组件的随着指示点添加背景宽度不随着内容添加而自动扩大问题,而是溢出。
- 一只公鸡5块钱,一只母鸡3块钱,3只小鸡一块钱,一个农夫用100块钱买100只鸡(不许解方程),怎么实现?编写java程序。...
- 软件测试的定义是什么?
热门文章
- 使用Server 2008新GPO做驱动器映射
- 《无线网络:理解和应对互联网环境下网络互连所带来的挑战》——第2章 无线生态系统 2.1无线标准化过程...
- ServerSocketChannel API用法
- 用jquery写一个属于自己的音乐播放器
- javax.servlet.jsp.JspTagException:
- 二手房买卖砍价最新攻略 帮你花少钱买好房
- Linux系统目录结构及主要内容
- Python面试题总结(6)--数据类型(综合)
- 深度学习之卷积神经网络 ZF Net
- python中tkinter的使用-中