android中存储的一些步骤

来源:互联网 发布:新浪nba科比数据 编辑:程序博客网 时间:2024/04/30 19:12
外置存储:(存储在mnt的sd卡下面)
1)外置sdcard存储相关FAQ?
a)存储状态(是否已经挂载SDCARD)
String state01=Environment.getExternalStorageState();查询是否有SD卡返回MOUNTED是表示有的意思
boolean state02=Environment.isExternalStorageRemovable();表示SD卡是否插入返回false表示没有删除
if(!(Environment.MEDIA_MOUNTED.equals(state01)||!state02))判断安装是否成功  toast...


b)存储路径 (存储路径)(一般是在mnt/sdcard/下)
File sdcard=Environment.getExternalStorageDirectory();获得应用程序的公有存储目录
File picSdcard=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)获得照片的公有目录
获得应用程序私有存储目录(必须具备写sdcard权限):
File privateDir=getExternalFilesDir(Environment.DIRECTORY_PICTURES);获得私有照片的目录
File cacheDir=getExternalCacheDir();//获得私有的缓存目录

c)存储空间(是否有空间继续存储)
StatFs(获得空间大小)
StatFs s=new StatFs(sdcard.getPath());
int blockCount=s.getBlockCount();获得总块数
int aBlocks=s.getAvailableBlocks();获得可用块
int fBlocks=s.getFreeBlocks();//>=aBlocks获得空闲块,大于等于可用块aBlock
int size=s.getBlockSize();获得块大小,值是一个字节单位
d)存储权限 (是否有权限)
在清单文件中写:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>,来获得权限

e)存储实现 (相关API及相关步骤)
if(aBlocks*size<data.getBytes().length)判断是否内存够不够

写入内存
String a = "hello";定义了一个字符串写入内存
OutputStream out=new FileOutputStream(new File(sdcard,"a1.text"));
out.write(a.getBytes());
out.close();


读取内存内容
File sdcard = Environment.getExternalStorageDirectory();获得公有内存的目录
InputStream innew FileInputStream(new File(sdcard, "a1.text"));
byte buf[] = new byte[(in.available())];
int len = in.read(buf);
String s= new String(buf,0,len)
in.close()
Toast.makeText(this, s , 0).show();成功了就吐司出内容

---------------------------------------------------------------------------------


内置sdcard存储(内部存储:内部存储的数据在应用卸载时会被删除,存储在data下)


File file=getFilesDir();//data/data/项目包/file,获得路径
File cache=getCacheDir();//data/data/项目包/cache获得路径
1)内置sdcard存储相关FAQ?


a)存储目录(Context)
b)存储大小(StatFS)
c)存储实现(存储在data\data项目包下)
写入内容
OutputStream out=openFileOutput("h1.txt",Context.MODE_APPEND)方法表示打开文件,并设置模式为追加,没有文件则自己创建
out.write("helloworld".getBytes());写入内容
读取内容
InputStream in=openFileInput("h1.txt");打开文件读取
byte buf[]=new byte[in.available()]
int len=in.read(buf);
String s= new String(buf,0,len)
in.close()释放资源


----------------------------------------------------------------------------------
偏好设置
偏好设置相关API?
Context
SharedPreferences
Editor(写入数据时要借助此对象)


写入内容:
SharedPreferences sp=getSharedPreferences("user",//文件名,默认为xmlContext.MODE_PRIVATE//设置使用不能追加);
Editor et=sp.edit();获得编辑的方法
et.putBoolean("isUsed", true);写入一个boolena类型的内容
et.commit();持久化数据,类似于刷新
读取内容:
SharedPreferences sp=getSharedPreferences("user",//文件名,默认为xmlContext.MODE_PRIVATE);
boolean flag=sp.getBoolean("isUsed", false);读取IsUsed的内容,如果没有就返回默认值false



---------------------------------------------------------------------------------------


sqlite数据库


创建数据库:onCreateDB
private SQLiteDatabase sdb;
sdb=openOrCreateDatabase("external.db",//name,Context.MODE_PRIVATE,//model,null)方法表示为打开或创建


创建表:onCreateTable
String sql="create table if not exists contact("+ "_id integer primary key autoincrement,"
+ "phone text not null,"+ "name text)";创建表,如果不存在的话 ,id:表示如果没有输入id则会自动增加
phone不能为空,
sdb.execSQL(sql);//发送SQL语句


写入插入:onInsert
String sql="insert into contact values + "(null,'138','B')";
sdb.execSQL(sql)发送SQL语句


查询:onSelect
String sql="select * from contact";
Cursor c=sdb.rawQuery(sql, null);把内容按光标读取,表示一行一行读取
if(c==null){Log.i("TAG", "query error");return;}
if(!c.moveToFirst()){ Log.i("TAG", "no data"); return;}
do{//循环一次取一行 循环取出
Log.i("TAG",
 c.getInt(c.getColumnIndex("_id"))+"/"+
 c.getString(c.getColumnIndex("phone"))+"/"+
 c.getString(c.getColumnIndex("name")));
}while(c.moveToNext());//继续移动指针
c.close();
第二种:跳转到另一个class,在listView上显示
startActivity(new Intent(this,OtherActivity.class));



修改数据:onUpdate
String sql="update contact set name=?"+ " where phone=?";
sdb.execSQL(sql, new String[]{"xuhu","139"});


删除表中数据:onDelete
String sql="delete from contact where phone=?";
sdb.execSQL(sql,new String[]{"139"});
String sql="drop table if exists contact";删除表结构






VO(值对象)封装




-------------------------------------------------------------------------------------------------------------------------









0 0
原创粉丝点击