android数据存储与访问java
Android为数据存储提供了以下5种方式:android
文件(I/O)数据库
SharedPreferences(参数)数组
SQLite数据库浏览器
内容提供者(Content provider)缓存
网络网络
文件保存:ide
public class FileService{ private Context context; public FileService(Context context){ this.context = context; } /** *保存文件 *@param filename 文件名称 *@param content 文件内容 */ public void save(String filename,String content) throws Exception{ FileOutputStream = context.openFileOutput(filename,Context.MODE_PRIVATE); //Context.MODE_PRIVATE 私有操做模式:建立出来的文件只能被本应用访问,其余应用没法访问该文件, //另外采用私有操做模式建立的文件,写入文件中的内容会覆盖原文件内容 outStream.write(content.getBytes()); outStream.close(); } }
几种文件的操做模式:this
Context.MODE_PRIVATE 私有操做模式:这是默认的模式。建立出来的文件只能被本应用访问,其余应用没法访问该文件,另外采用私有操做模式建立的文件,写入文件中的内容会覆盖原文件内容spa
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固然是没有问题的。
文件读取:
/** *读取文件内容 *@param filename 文件名称 *@return 文件内容 */ public void read(String filename) throws Exception{ FileInputStream inStream = context.openFileInput(filename); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0;//inStream.read(buffer)的返回值,返回值是你读进缓冲区的字符个数 while((len = inStream.read(buffer)) != -1){ outStream.write(buffer,0,len);//获取buffer数组什么范围的数据 } byte[] data = outStream.toByteArray(); return new String(data); }
读取文件内容:
若是要打开存放在/data/data/<package name>/file目录应用私有的文件,可使用Activity提供的openFileInput()方法。
FileInputStream inStream = 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- 表示能被其余应用读、写。不能执行;