android:数据存储和访问

来源:互联网 发布:知乎765心理学综合 编辑:程序博客网 时间:2024/05/21 10:08

文件

SharedPreferences(参数)

SQLite数据库

内容提供者(Content provider)

网络


文件读取

把数据从内存里面放入持久化的文件里

File file=new File("info.dat");

FileOutputStream fos=new FileOutputStream(file);

这样的代码在java项目时,保存在java工程目录里面

在android里面这样就不行了

Context :上下文,提供一些信息,提供一些环境,就是一个帮助类,

context.getFileDir();//得到当前这个应用程序,在文件系统上所存储的路径,就是//data/data/com.ithim.log/files/

File file=new File(context.getFileDir(),"info.dat");FileOutputStream fos=new FileOutputStream(file);fos.write("sdfsdfsd")fos.close();

是写入//data/data/com.ithim.log/files/info.dat文件里面字符串sdfsdfsd

File file=new File(context.getFileDir(),"info.dat");FileInputStream fis=new FileInputStream(file);BufferedReader br=new BufferedReader(new InputStreamReader(fis));String info=br.readLine();

是读取文件

context.getFilesDir();//data/data/<包名>/files/应用程序的数据

context.getCacheDir();//data/data/<包名>/cache/应用程序的缓存

设置->管理应用程序->应用程序->清除数据 是清除files目录 

设置->管理应用程序->应用程序->清除缓存 是清除cache目录 

context.openFileInput("info.data");是上面前3句代码的组合 得到一个文件的输入流

context.openFileOutput("info.data",mode) 组合 得到一个文件的输出流

文件权限

一个应用程序默认创建的文件是一个私有的文件别的应用程序是不可以访问的

Context.MODE_PRIVATE
Context.MODE_WORLD_READABLE 别的应用程序是可以读他的数据,别的应用程序是不可以往里面写数据
Context.MODE_WORLD_WRITEABLE 别的应用程序是可以往里面写数据,别的应用程序是不可以读他的数据

可以+的方式写(Context.MODE_WORLD_WRITEABLE +Context.MODE_WORLD_READABLE )是共有的

adb shell

cd /data/data/<包名>/files/

chmod 777 info.data 更改权限指令 全局可读可写

需要root权限后才可以执行这个命令