安卓数据库编程总结(1)
2016-04-11 21:26
363 查看
最近学习了安卓数据库编程,一直没时间好好总结一下,因此今天抽空总结一下,算是给自己的知识升华一下。
首先,安卓数据存储分为五大类:
**1. Shared Preferences
- 外部存储(SD卡)
- 内部存储(手机内存)
- 网络存储
- SQLite Databases**
本篇博客先介绍手机内部和外部存储: 内部存储和外部也可以理解为File存储,谷歌为我们提供了两钟文件夹来存放File信息:
- files文件夹:存放重要文件,只有应用被卸载或者删除数据才会丢失
- cache文件夹:存放临时文件信息,应用删除缓存就删除文件数据
这两种文件夹都位于数据文件夹下
## 内部存储 ##
在安卓中,Context给我们提供了两个方法来打开本应用程序文件夹下的文件的IO流。
File存储的文件位于应用文件夹/data/data/files
**MODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE已经被不建议使用,如果需要和其他的应用程序分享数据,建议使用Contenprovider或者Broadcastreceiver。
`
首先,安卓数据存储分为五大类:
**1. Shared Preferences
- 外部存储(SD卡)
- 内部存储(手机内存)
- 网络存储
- SQLite Databases**
本篇博客先介绍手机内部和外部存储: 内部存储和外部也可以理解为File存储,谷歌为我们提供了两钟文件夹来存放File信息:
- files文件夹:存放重要文件,只有应用被卸载或者删除数据才会丢失
- cache文件夹:存放临时文件信息,应用删除缓存就删除文件数据
这两种文件夹都位于数据文件夹下
getFilesDir()//返回使用openFileOutput创建的文件的绝对路径 File file=getFilesDir();file.getPath();//返回/data/data/com.example.filestorage/files File file=getCacheDir() file.getPath();//返回data/data/com.example.filestorage/cache
## 内部存储 ##
在安卓中,Context给我们提供了两个方法来打开本应用程序文件夹下的文件的IO流。
File存储的文件位于应用文件夹/data/data/files
1 public abstract FileInputStream openFileInput(String name)//取得文件输入流 name:需要打开的文件,不能含有分隔符 2 public abstract FileOutputStream openFileOutput(String name, int mode)//取得文件输出流 name:需要打开的文件,不能含有分隔符 mode:打开文件的模式,安卓里面有四中文件创建模式: MODE_APPEND//追加模式,可以向文件追加内容 MODE_PRIVATE//默认模式,私有模式,该文件只能被当前应用读写,并且输入新内容后就得内容会被删除 MODE_WORLD_READABLE//只读模式,该应用程序可以被其他应用程序读取 MODE_WORLD_WRITEABLE//可写模式,该应用程序可以被其他应用程序读写 **注意:只有MODE_APPEND模式才可以追加内容,其它模式在写入新内容时,就得内容就被删除。**
**MODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE已经被不建议使用,如果需要和其他的应用程序分享数据,建议使用Contenprovider或者Broadcastreceiver。
外部存储
进行外部存储读取数据的步骤:1 配置权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 2 判断SD卡状态,即是否插入SD卡 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 如果返回true,则SD卡可用,false不可用 3 取得SD卡目录 Environment.getExternalStorageDirectory() 4 使用输出输入流读取SD卡文件数据 **内部存储示例代码* ```public class MainActivity extends ActionBarActivity { private EditText et_write,et_query; private static final String FILE_NAME="file1.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ et_write=(EditText)findViewById(R.id.et_write); et_query=(EditText)findViewById(R.id.et_query); } public void click1(View view) throws Exception{ FileOutputStream fos=openFileOutput(FILE_NAME, MODE_APPEND); String datas=et_write.getText().toString().trim(); fos.write(datas.getBytes()); Toast.makeText(MainActivity.this, "添加成功", 0).show(); fos.close(); } public void click2(View view) throws Exception{ FileInputStream fis= openFileInput(FILE_NAME); byte[] buff=new byte[1024]; //由于会修改和删除文件信息,所以为了减少内存开销,不建议使用不可改变字符串的String StringBuilder sb=new StringBuilder(); int len=0; while((len=fis.read(buff))!=-1){ sb.append(new String(buff)); } et_query.setText(sb.toString()); Toast.makeText(MainActivity.this, "读取成功", 0).show(); } 片
`
相关文章推荐
- 第一个hibernate5.1.0--向数据库中插入一条数据
- Mybatis 中sql 使用in(#{item})无法查询解决办法
- mysql数据类型(02)
- Mysql中的Cascade,NO ACTION,Restrict,SET NULL
- 优化配置和索引查询--MySQL服务器进程CPU占用100%的解决方法
- mysqlwhere子句进行条件选择
- (1)初识mysql binlog
- Redis与Memcached的区别
- 《MySQL必知必会学习笔记》:游标的使用
- SQL注入式攻击
- MySQL5.7设置root密码
- SQL语句的执行顺序
- Oracle Linux 6.5 RPM安装Mysql 5.7.11
- Oracle数据库--实用操作(5)过程,函数,程序包
- 完全卸载MySQL数据库
- MySQL单列索引和联合索引
- 数据库设计Step by Step (7)——概念数据建模
- Redis-3.0.7_ubuntu下编译
- Oracle数据库--实用操作(4)游标
- 干货--Redis+Spring+Struts2实现网站计算器应用项目案例