# Android文件存储和数据库基本知识

来源:互联网 发布:淘宝查询信誉网站 编辑:程序博客网 时间:2024/04/30 03:28

课程内容: 数据存储

  • Android中的内部存储空间的文件存储;
  • Android中sd卡的文件存储;
  • 数据库和sql语句;

一,linux文件系统目录结构

  • linux只有一套文件系统目录结构,唯一的起点称为根目录/,其它分区是通过挂载方式使用。

    d -> /sys/kernel/debug
    路径一开头第一个/叫根目录,后面的/称为路径分隔符

  • linux文件类型,d - l
    • d表示是文件夹
    • -表示普通文件,文本文件,二进制文件
    • l软链接 相当于windows的快捷方式

android应用的私有目录

  • data/data/应用包名 这是应用程序私有目录
  • 应用可以读写自己的私有目录,不能读取其他应用的私有目录;读取别的私有目录,会发生文件无法读取的异常;
  • /data/data/应用包名/files 用于存储一般文件,清除数据会有提示
  • 获得目录方式 getFileDir();
  • /data/data/应用包名/catche 存储缓存文件,清除缓存,直接删除
  • 获得目录方式 getCacheDir();
    利用getCacheDir()创建File对象
    File file = new File(getCacheDir(), “cache.txt”);

Context 上下文

  • Context 上下文:为Android 应用程序提供各种功能,资源和服务的环境.相当于一个小区周围的配套环境.

应用程序的日志

PID 进程
TID 线程
断言 assert 在调试中用;

    private static final String TAG = "MainActivity";        //TAG一般写当前类名        Log.v(TAG, "verbose");//输出一般日志信息        Log.d(TAG, "debug");//输出debug信息        Log.i(TAG, "info");//输出info信息        Log.w(TAG, "warn");        Log.e(TAG, "error");

如何锁定横屏(显示的控件不发生界面旋转)呢? 在xml界面的screenOritation 设置一下
Android系统中为每个应用app指定一个uid,不同的应用程序分配的uid是不一样的.
Android中不同的app应用被视为其他用户;
- 没有相应的权限
r 有读权限
w 有写权限
x 有执行权限
chmod 664 private.txt 可以改变权限
安卓把SD卡读写专门做了一个组
安卓组id可以用来SD卡的存储~

Android系统中的文件存储

存储的分类

  • RAM:内存或者主存,带电存储,掉电数据不能保存;
  • ROM:(读的速度快,写的速度慢)内部存储空间;掉电了数据也能保存;(sharepreference,缓存都是属于这部分)
  • SD卡: 可插拔的存储设备;相当于电脑的移动硬盘;

存储方式

  • 内部存储空间存储
  • 1./data/data/包名/shared_prefs/config.xml 用sharePreferences来获得
  • 2./data/data/包名/files/ 用getFilesDir()来获得
  • 3./data/data/包名/catche 用getCacheDir()来获得

SD卡存储

  • 应用程序读写sdcard 需要申请相应权限
    • 读sd卡可能需要申请权限 READ_EXTERNAL_STORAGE
    • 写公用的sdcard 需要申请权限 WRITE_EXTERNAL_STORAGE
  • sdcard路径获得方法

如何获得SD卡的大小?看下面的代码!

Environment.getExternalStorageDirectory()        File file = new File(Environment.getExternalStorageDirectory(),"test.txt");* sdcard当前状态获得 Environment.getExternalStorageState()        if(Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED){

sd卡空间大小

        // 从settings应用中查找到sd卡空间大小获得方法        File path = Environment.getExternalStorageDirectory();        // 获得StatFs对象,可以获得sd卡大小信息        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSize();        // stat.getBlockCountLong()        long totalBlocks = stat.getBlockCount();        long availableBlocks = stat.getAvailableBlocks();        Toast.makeText(                this,                "sd卡总空间大小:"                        + Formatter.formatFileSize(this, totalBlocks                                * blockSize), Toast.LENGTH_LONG).show();

**注意:读SD卡时可能需要添加权限;写SD卡一定要权限;
* 应用程序读写SD卡需要申请相应的权限
* 读SD卡可能需要申请权限
* 写公用的SD卡需要申请权限**

数据库

什么是数据库

  • 数据库:存储数据的仓库,使用专门sql语句实现快速的增删改查.相当于电子化的文件柜;

常用的数据库管理 软件

  • 数据库管理软件,相当于档案管理员;
  • Oracle 甲骨文;商用及其广泛
  • SQL Server 微软
  • MySql 开源
  • sqllit 嵌入式,轻量级数据库

数据库和一般文件存储对比

  • 数据库采用数据表方式存储数据,通过索引方式管理,利用sql语句可以实现快速增删改查。

基本sql语句使用CRUD

* 创建数据表:create table 表名(列名 列的类型,...)        CREATE TABLE userinfo (id integer primary key autoincrement,username varchar(20),password varchar(20));* 增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)* 增:insert into 表名 (要插入的列名,...) values (对应列数据,...)        insert into userinfo (id,username,password) values (1,'zhangsan',"abc123")* 删:delete from 表名 where 条件1 or 条件2 and 条件3        delete from userinfo where id=2 or username='lisi'        delete from userinfo    删除表中所有数据* 改:update 表名 set 修改的列名1=值1,修改的列名2=值2 where 条件        update userinfo set password='1234',username='lisi' where id=3* 查:select 要查出列名1,要查出列名2 from 表名 where 条件        select * from userinfo      查出所有数据        select * from userinfo where id=4   指定条件查询        select id,password from userinfo where id=4
  • 例子:
        --select * from data1 where id='1350010'        --select * from data2 where id=381        select location from data2 where id=(select outkey from data1 where id='1350110')
0 0
原创粉丝点击