android数据存储与访问

Android为数据存储提供了如下5种方式:

  1. 文件(I/O)

  2. SharedPreferences(参数)

  3. SQLite数据库

  4. 内容提供者(Content provider)

  5. 网络


文件保存:

publicclassFileService{privateContextcontext;publicFileService(Contextcontext){this.context=context;}/***保存文件*@paramfilename文件名称*@paramcontent文件内容*/publicvoidsave(Stringfilename,Stringcontent)throwsException{FileOutputStream=context.openFileOutput(filename,Context.MODE_PRIVATE);//Context.MODE_PRIVATE私有操作模式:创建出来的文件只能被本应用访问,其他应用无法访问该文件,//另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件内容outStream.write(content.getBytes());outStream.close();}}

几种文件的操作模式:

Context.MODE_PRIVATE 私有操作模式:这是默认的模式。创建出来的文件只能被本应用访问,其他应用无法访问该文件,另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件内容

Context.MODE_APPEND 追加操作模式:该模式会检查文件是否存在,存在就往文件追加内容,否则流创建新文件,同样只能被应用访问。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入;

如果希望文件被其他应用读和写,可以同时传入两个,相当于是传入了‘3’;

即:openFileOutput(filename,Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

因为本身这两个模式表示的就是一个int的1和2,直接写3当然是没有问题的。


文件读取:

/***读取文件内容*@paramfilename文件名称*@return文件内容*/publicvoidread(Stringfilename)throwsException{FileInputStreaminStream=context.openFileInput(filename);ByteArrayOutputStreamoutStream=newByteArrayOutputStream();byte[]buffer=newbyte[1024];intlen=0;//inStream.read(buffer)的返回值,返回值是你读进缓冲区的字符个数while((len=inStream.read(buffer))!=-1){outStream.write(buffer,0,len);//获取buffer数组什么范围的数据}byte[]data=outStream.toByteArray();returnnewString(data);}


读取文件内容:

如果要打开存放在/data/data/<package name>/file目录应用私有的文件,可以使用Activity提供的openFileInput()方法。

FileInputStreaminStream=this.getContext().openFileInput("luhan.txt");


或者直接用文件的绝对路径:

File file = new File("data/data/com.richbond.demo/files/luhan.txt");

注意:上面文件路径中的"com.richbond.demo"为应用所在的包。移植代码的时候要替换成当前应用的包。

Activity还提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用于获取/data/data/<package name>/cache目录

以后做应用的时候可以专门把缓存文件放到cache文件夹中。

getFilesDir()方法用于获取/data/data/<package name>/files目录


文件浏览器中文件的权限表示:

- rw- rw- rw- 这个是一个权限表示,分别是 本应用,同组应用,其他应用。

第一个-表示一个文件,如果是一个目录则是d;

第一个rw- 表示能被这个应用读、写。不能执行;

第二个rw- 表示能被同组应用读、写。不能执行;

第三个rw- 表示能被其他应用读、写。不能执行;



更多相关文章

  1. 关于android studio 出现Error:Execution failed for task ':app
  2. Logger详解(二)
  3. CM13.0代码下载
  4. Android(安卓)笔记
  5. Ubuntu 编译Android若干错误及解决方法(转)
  6. Android(安卓)MediaPlayer基本使用方式
  7. Android(安卓)读取内存文件返回byte数组
  8. mac版 android破解软件下载安装
  9. Android开发 使用XML文件设置背景变化

随机推荐

  1. android利用websocket协议与服务器通信
  2. Android(安卓)TTS学习(补充)--我能说中文
  3. android测试之monkey
  4. Android平台一日游
  5. 最简单的基于FFmpeg的移动端例子:Android(
  6. android webview的代替品
  7. Android(安卓)CPU架构
  8. 实现Launcher的抽屉效果
  9. Android(安卓)进程回收之LowMemoryKiller
  10. Android(安卓)SDK Manager 和 AVD Manage