16.1文件存储
16.1.1内部存储
openFileInput(FileName); openFileOutput(FileName,mode)
//mode:
//MODE_PRIVATE:代表自己本程序可以使用
//MODE_APPEND:表示可追加
//MODE_WORLD_READABLE:可以被其他app程序读,不能写。4.2之后舍弃
//MODE_WORLD_WRITEABLE:可以被其他程序读写
16.1.2外部存储
1.Environment.getDataDirectory() = /data 这个方法是获取内部存储的根路径
2.getFilesDir().getAbsolutePath() = /data/user/0/packname/fifiles这个方法是获取某个应用在内部 存储中的fifiles路径
3.getCacheDir().getAbsolutePath() = /data/user/0/packname/cache 这个 方法是获取某个应用在内部存储中的cache路径
4.getDir(“myFile”, MODE_PRIVATE).getAbsolutePath() =
/data/user/0/packname/app_myFile 这个方法是获取某 个应用在内部存储中的自定义路径方法2,3,4的路径中都带有包名,说明他们是属于某个应用
5.Environment.getExternalStorageDirectory().getAbsolutePath()=/storage/emulated/0 这个 方法是获取外部存储的根路径
6.Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath()=/storage/emulated/0 这个方法是获取外部存储的根路径
7.getExternalFilesDir(“”).getAbsolutePath()=/storage/emulated/0/Android/data/packname/fifiles 这个方法是获取某个应用在外部存储中的fifiles路径
8.getExternalCacheDir().getAbsolutePath()=/storage/emulated/0/Android/data/packname/cache 这个方法是获取某个应用在外部存储中的> cache路径
<!--文件读写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
//1.判断外部存储设备是否可用:设备是可以用装载
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//2.获取外部存储的路径:不同Android版本 手机型号:华为 小米;外部存储一般sdCard
String sdPath= getApplicationContext().getExternalFilesDir(null).getAbsoluteFile().toString( );
//3.创建文件
File file=new File(sdPath+"a.txt");
try{
if(!file.exists()){
file.createNewFile();
}
//4.IO流
FileInputStream fi=new FileInputStream(file); byte buff[]=new
byte[fi.available()];
//5.写入数据 fi.read(buff);
//6.关闭
System.out.println("red==="+new String(buff)); }catch (Exception e){
e.printStackTrace();
}
System.out.println(sdPath);
}
16.2XML序列化
- 序列化是将对象状态转换为可保持或传输的过程。在序列化对象时,需要使用XmlSerialize序列化器,它可以将I0流中传输的对象变得像基本类型数据一样,实现数据传递的功能。
- 序列化后的对象以XML形式保存。
16.3 SqlLite
16.3.1SqlLite数据库简介
- SQLite是一个轻量级数据库,第一-个版本诞生于2000年5月。它最初是为嵌入式设计的,占用资源非常低,在内存中只需要占用几百KB的存储的空间。
- SQLite 是遵守ACID关联式的数据库管理系统。ACID是指数据库事务正确执行的基本要素,即原子性(Atomicity)
、一致性(Consistency) 、 隔离性(Isolation)、持久性(Durability) 。 - SQLite没有 服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且支持NULL、INTEGER、 REAL
(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)五种数据类型。
16.3.2 SqlLite数据库的使用
1) SqlLite操作API
ndroid SDK提供了一系列对数据库进行操作的类和接口。常用的数据库操作类有:
- SQLiteOpenHelper类
该类是一个抽象类,用于创建数据库和数据库版本更新。 - SQLiteDatabase类
该类是一个数据库访问类,封装了一系列数据库操作的API,可以对数据进行增删改查操作。 - Cursor接口
是一个游标接口,在数据库操作中作为返回值,相当于结果集ResultSet。
2)数据库的常用操作
Android SDK提供了一系列对数据库进行操作SQLite数据库的API。SQLiteDatabase就是其中一个,它提供了一些列用于操作数据库的方法。
- insert()
- update()
- delete()
- query()
3)sqlite3工具
在使用该工具时,首先需要打开DOS命令行,依次输入如下命令:
adb shell (挂 载到linux的空间)
cd data/data (进 入data/data目录)
cd cn.itcast.db (应 用程序包名)
Is (Linxus命令列出当前文件夹下的文件)
cd databases (进 入databases文件夹)
ls-I (列出当前文件夹所有文件的详细格式)
sqlite3 person.db (使用sqlite3操作应用程序下的数据库)
select * from person; (利用sq|语句查询person表中的信息)