android基础02

1.context.openFileOutput("config.txt",Context.MODE_PRIVATE);
创建的文件:data/data/<包名>/files/config.txt 存放手机rom内存里面的.
Context.MODE_APPEND 默认文件的访问修饰权限 是私有

2. RAM:Random Access Memery 随机访问内存,手机内存,访问速度非常快,掉电数据丢失,通常意思上的内存
ROM:Read Only Memery 只读内存,类似U盘的闪存,微硬盘,访问速度稍微低一点,掉电数据不丢失。

3.Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
SD卡安装好,可读可写

4.获取sd卡的存储大小
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long totalbytes =  blockSize*totalBlocks;
System.out.println(totalbytes);

5.初始化SharedPreferences,创建SharedPreferences文件config,设置权限,文件是一个xml文件,也就是一个map集合
config文件在 /data/data/<包名>/shared_prefs/config.xml

//没有config.xml文件则创建,有则获取sp对象
SharedPreferences sp = Context.getSharedPreferences("config", MODE_PRIVATE);

sp.getString("name","zhangsan"); 获取SharedPreferences里的name的值,如果name没有值,则设置name为默认值 zhangsan

Editor editor = sp.edit();        
editor.putString("name", name);
editor.putString("num", num);
editor.putString("email", email);

editor.clear(); 清楚数据
editor.commit();

6.Context.openFileInput("config.txt");
读取文件:默认文件路径 data/data/<包名>/files/config.txt

7. Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录,用户可以手工清除这些数据
getFilesDir()方法用于获取/data/data/<package name>/files目录

8.使用DOS命令创建一张SDCard卡
mksdcard 2048M D:\AndroidTool\sdcard.img

9.AssetManager am = Context.getAssets(); 获取assets目录的管理器。
InputStream is = am.open("config.xml"); 用am打开assets目录下的config.xml文件。
XmlPullParser parser = Xml.newPullParser(); 获取PullParser解析器
parser.setInput(in, "UTF-8"); 设置输入流的编码格式
for(int type=parser.getEventType();type != XmlPullParser.END_DOCUMENT;type=parser.next()){
if(type==XmlPullParser.START_TAG){
if(parser.getName().equals("person")){
p = new Person();
p.setId(Integer.valueOf(parser.getAttributeValue(0)));
persons.add(p);
}else if(parser.getName().equals("name")){
p.setName(parser.nextText());
}else if(parser.getName().equals("age")){
p.setAge(Integer.valueOf(parser.nextText()));
}
}
}

10.把数据写到xml文件上,
XmlSerializer s = Xml.newSerializer(); 获取序列化器
File file = new File(Environment.getExternalStorageDirectory(),"persons.xml");
OutputStream out = new FileOutpupStream(file);
s.startDocument("UTF-8", true); 开始写文档,并设置文档的编码格式,以及 readonly = true
s.startTag(null, "persons"); 开始写标签,第一个参数为 名称空间,第二个为开始标签

s.endTag(null,"persons"); 结束标签
s.endDocument(); 文档结束标签

11.SQLite特点
1.Android平台中嵌入了一个关系型数据库SQLite,和其他数据库不同的是SQLite存储数据时不区分类型
例如一个字段声明为Integer类型,我们也可以将一个字符串存入,一个字段声明为布尔型,我们也可以存入浮点数。
除非是主键被定义为Integer,这时只能存储64位整数
2.创建数据库的表时可以不指定数据类型,例如:
CREATE TABLE person(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))
CREATE TABLE person(id INTEGER PRIMARY KEY AUTOINCREMENT, name)
3.SQLite支持大部分标准SQL语句,增删改查语句都是通用的,分页查询语句和MySQL相同
SELECT * FROM person LIMIT 20 OFFSET 10
SELECT * FROM person LIMIT 10,20

12.SQLiteOpenHelper抽象类抽象类
提供了两个重要的方法,分别是:
onCreate(SQLiteDatabase db),用于初次使用软件时生成数据库表 ,
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)后者用于升级软件时更新数据库表结构。

当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteData    base实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法
也就是说,onCreate()方法只有在初次生成数据库时才会被调用,只执行一次。

13. SQLiteDatabase:
execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;
rawQuery()方法用于执行select语句。

14.getWritableDatabase()和getReadableDatabase()区别 :
1.getWritableDatabase() 在操作的时候,只能一个类来操作,同步操作
  getReadableDatabase() 异步操作,可以有多个类同时操作
2.getWritableDatabase() 以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错
  getReadableDatabase() 方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。

猜你喜欢

转载自xpchou.iteye.com/blog/1629268
今日推荐